So fügen Sie Meta-Seiten zu Pages hinzu

Ich bin fast fertig mit meinem WP-Thema und ich übersetze es jetzt mit dem WPML-Plugin. Das funktioniert großartig (sogar alle meine benutzerdefinierten Post-Typen und Meta-Boxen :)), aber natürlich muss es ein Problem geben. Ich habe Meta-Boxen zu einer bestimmten Seite hinzugefügt und habe es so ausgerichtet:

add_action('admin_init','my_meta_init'); function my_meta_init() { $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ; // checks for post/page ID if ($post_id == '17') { add_meta_box('meta_webdesign', 'Webdesign', 'my_meta_webdesign', 'page', 'normal', 'high'); add_meta_box('meta_grafisk', 'Grafisk design & Identitets design', 'my_meta_grafisk', 'page', 'normal', 'high'); add_meta_box('meta_illustrasjon', 'Illustrasjon', 'my_meta_illustrasjon', 'page', 'normal', 'high'); } 

Aber jetzt muss ich auch auf die englische Version der Seite zielen (id 348), wie mache ich das?

Ps. Ich habe es versucht: if ($ template_file == ‘page-tjenester.php’) (die norwegische und englische Version verwenden beide die gleiche Vorlage, aber dann verschwinden alle Meta-Felder.)

Ich wäre sehr dankbar für Hilfe dabei 🙂

Solutions Collecting From Web of "So fügen Sie Meta-Seiten zu Pages hinzu"

Ich habe das endlich funktioniert ($ template_file == ‘page-tjenester.php’), also werden meine Metaboxen nur angezeigt, wenn ich diese spezifische Seitenvorlage verwende!

Dies ist der letzte Code, wenn jemand interessant ist;

 add_action('admin_init','my_meta_init'); function my_meta_init() { $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ; $template_file = get_post_meta($post_id,'_wp_page_template',TRUE); if ($template_file == 'page-tjenester.php') { // this will only show on pages that have been saved with the page-tjenester.php template add_meta_box('meta_webdesign', 'Webdesign', 'my_meta_webdesign', 'page', 'normal', 'high'); add_meta_box('meta_grafisk', 'Grafisk design & Identitets design', 'my_meta_grafisk', 'page', 'normal', 'high'); add_meta_box('meta_illustrasjon', 'Illustrasjon', 'my_meta_illustrasjon', 'page', 'normal', 'high'); } } 

Überhaupt nicht schwer (nicht sicher, was ich falsch gemacht habe, als ich das vorher versuchte)

Verwenden Sie die icl_object_id- function von WPML. Es triggers automatisch die ID in Abhängigkeit von der aktuellen Sprache auf.

Eine andere Option und IMO viel zuverlässiger wäre es, die Überprüfung auf der Grundlage der Slug der Seite zu tun. Es würde Sie abdecken, falls Sie versehentlich den betreffenden Post / die betreffende Seite löschen. Mit einer ID-Prüfung würden Sie gezwungen sein, die Code-Quelle erneut zu bearbeiten und mit einem Slug-Check müssten Sie nur eine Seite mit dem gleichen Slug neu erstellen. Nur meine 2 Cent.

Sie könnten Limon ausprobieren

In diesem Fall würde der Code für den Seitentyp wie folgt aussehen. in diesem Fall müssen Sie nicht an die Haken denken und welche Haken zu verwenden 🙂

  // Create Metabox $custom_meta_box = new MetaBox(); $custom_meta_box-> create('meta_webdesign', 'Webdesign', 'my_meta_webdesign', 'page'); // Add some fields $custom_meta_box-> addTextField('Design', 'tf_webdesign'); function my_meta_webdesign( $meta_fields ) { echo $meta_fields['tf_webdesign']; } 

https://bitbucket.org/DanelK/limon-project/src/a2d5e081249a/_README_EXAMPLES_

Es gibt natürlich einige weitere Methoden, die Sie nützlich finden könnten.