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();
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.
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