Programmatisch Postvorlagen ändern?

Ich muss die Vorlage auf mehreren hundert Seiten meiner Website ändern. Weiß jemand, ob es einen programmgesteuerten Befehl gibt? Siehe das folgende Code-Snippet; Ich möchte meinen Kommentar innerhalb der Schleife durch eine function ersetzen, die die Vorlage der aktuellen Seite ändert:

query = new WP_Query($args); while ( $query->have_posts() ) : $the_query->the_post(); if ( has_tag('tag-slug') ) { /* CHANGE TEMPLATE OF $post */ } endwhile; wp_reset_postdata(); 

Solutions Collecting From Web of "Programmatisch Postvorlagen ändern?"

Ich nehme an, dass Sie die Seiten mit einer neuen Post-Vorlage in der DB speichern wollen? Sehen Sie nach, ob sich im Post-Objekt etwas befindet, das auf die Page-Vorlage verweist, wenn Sie also eine Abfrage erstellen, die diese aktualisiert.

Aktualisieren:

Entnommen aus der wp_insert_post Dokumentation

HINWEIS: Der Schlüssel page_template wurde aus der Tabelle $ post entfernt und befindet sich jetzt in der Tabelle wp_postmeta. Um die Seitenvorlage einer Seite festzulegen, verwenden Sie stattdessen update_post_meta mit einem Metaschlüssel von _wp_page_template.

So können Sie die Seitenvorlage mit get_post_meta abrufen und mit update_post_meta aktualisieren (oder mit add_post_meta festlegen )

Auf welche Formatierung beziehen Sie sich? Wenn Sie die Formatierung ändern möchten, die von CSS geändert werden kann. Sie können post_class () verwenden, das eine class hinzufügt, die Ihr Tag im Container benennt. Dann können Sie das Targeting für diese class anpassen.

Innerhalb der Schleife:

 
>

Überprüfen Sie auch die Aktion pre_get_post ; Verwenden Sie es mit Bedingungen möglicherweise helfen.

Versuche dies:

 while ( $query->have_posts() ) : $query->the_post(); if ( has_tag('tag-slug') ) { get_template_part( 'content', 'tag-slug' ); } else { get_template_part( 'content' ); } endwhile; 

Sie müssten dann content.php und content-tag-slug.php mit dem entsprechenden Inhalt erstellen.

Sie könnten auch beim Einrichten von Post-Formaten nachsehen. Ein bisschen mehr Arbeit im Voraus, aber ein schöneres Erlebnis auf der Straße.

Um die Vorlage eines update_post_meta($query->the_post->ID, '_wp_page_template', 'YOUR-NEW-TEMPLATE-HERE.php') zu ändern, rufen Sie update_post_meta($query->the_post->ID, '_wp_page_template', 'YOUR-NEW-TEMPLATE-HERE.php')

Hier ist das Beispiel aus dem WP-Codex, das in @ Xeross ‘Link zu dem Code-Snippet der ursprünglichen Frage gefunden wurde:

 $query = new WP_Query($args); while ( $query->have_posts() ) : $query->the_post(); if ( has_tag('tag-slug') ) { /* CHANGE TEMPLATE OF $post */ update_post_meta($query->the_post->ID, '_wp_page_template', 'YOUR-NEW-TEMPLATE-HERE.php'); } endwhile; wp_reset_postdata(); 

Ein großes Lob an @Xeross für die Bereitstellung der Antwort in einem Link und die Bereitstellung der Dokumentation darüber, wo das Template-Datum gespeichert ist. Weitere Informationen finden Sie in der @ Xeross-Antwort unter https://wordpress.stackexchange.com/a/24933/69247