it-swarm.com.de

Beitragsvorlagen programmatisch ändern?

Ich muss die Vorlage auf mehreren hundert Seiten meiner Site ändern. Weiß jemand, ob es einen Befehl gibt, um es programmgesteuert zu tun? Siehe das folgende Code-Snippet; Ich möchte meinen Kommentar in der Schleife durch eine Funktion 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();
2

Ich nehme an, Sie meinen das Speichern der Seiten mit einer neuen Post-Vorlage in der DB? Überprüfen Sie, ob sich im Post-Objekt etwas befindet, das auf die Seitenvorlage verweist. Erstellen Sie in diesem Fall eine Abfrage, die diese aktualisiert.

Aktualisieren:

Entnommen aus der Dokumentation wp_insert_post

HINWEIS: Der page_template-Schlüssel wurde aus der $ post-Tabelle entfernt und befindet sich jetzt in der wp_postmeta-Tabelle. Verwenden Sie zum Festlegen der Seitenvorlage einer Seite stattdessen update_post_meta mit dem Metaschlüssel _wp_page_template.

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

2
Not Available

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önnen sich auch mit dem Einrichten von Post-Formaten befassen. Ein bisschen mehr Arbeit im Voraus, aber eine schönere Erfahrung auf der Straße.

0
Doug

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

Hier ist also das Beispiel aus dem WP-Codex, der in @ Xeross 'Link mit dem Code-Snippet aus 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 zum Speicherort des Vorlagendatums. Weitere Informationen finden Sie in der Antwort von @ Xeross https://wordpress.stackexchange.com/a/24933/69247

0
Kirby

Auf welche Art von Formatierung beziehen Sie sich? Wenn Sie die Formatierung ändern möchten, kann dies durch CSS geändert werden. Sie können post_class () verwenden, um eine Klasse hinzuzufügen, die Ihr Tag im Container benennt. Dann können Sie die Ausrichtung auf diese Klasse stylen.

In der Schleife:

<div <?php post_class()?> >
</div>

Überprüfen Sie auch die Aktion pre_get_post ; Die Verwendung mit Bedingungen könnte helfen.

0
Sisir