Setzen Sie post_content in wp_insert_post bedingt

Kann der post_content in wp_insert_post bedingt gesetzt werden? Ich verwende eine foreach, um mehrere Seiten gleichzeitig hinzuzufügen:

foreach ($create_pages as $new_page) { $add_pages = array( 'post_title' => $new_page, 'post_content' => '', // lets say, if the page_title is 'Home', set the post_content to 'Default home page content' 'post_status' => 'publish', 'post_type' => 'page' ); $page_id = wp_insert_post($add_pages); } 

Wäre es auch möglich, den Standardinhalt für alle Seiten innerhalb einer PHP-Datei festzulegen?

Solutions Collecting From Web of "Setzen Sie post_content in wp_insert_post bedingt"

Ich kann nicht anders, als zu denken, dass ich etwas vermisse, aber was wie die offensichtliche Antwort scheint, ist, Ihr $create_pages Array zu ändern:

 $create_pages = array( 'one' => 'content for one', 'two' => 'content for two', 'three' => 'content for three' ); foreach ($create_pages as $title => $content) { $add_pages = array( 'post_title' => $title, 'post_content' => $content, // lets say, if the page_title is 'Home', set the post_content to 'Default home page content' 'post_status' => 'publish', 'post_type' => 'page' ); var_dump($add_pages); // debugging // $page_id = wp_insert_post($add_pages); } 

Es ist möglich, eine zweite Reihe von Post-Inhalten zu verwenden und sie mit den Titeln abzugleichen, aber basierend auf Ihrer Beschreibung des Problems kann ich nicht verstehen, warum Sie diese Komplexität benötigen.

Eine andere Option wäre die Verwendung verschachtelter Arrays, etwa so:

 $create_pages = array( array ( 'title' => 'one', 'content' => 'content for one' ), array ( 'title' => 'two', 'content' => 'content for two' ), array ( 'title' => 'three', 'content' => 'content for three' ), ); foreach ($create_pages as $page) { $add_pages = array( 'post_title' => $page['title'], 'post_content' => $page['content'], // lets say, if the page_title is 'Home', set the post_content to 'Default home page content' 'post_status' => 'publish', 'post_type' => 'page' ); var_dump($add_pages); // $page_id = wp_insert_post($add_pages); } 

Ich bin mir ziemlich sicher, dass jede Version gut funktionieren sollte (siehe dies und das ), obwohl letztere wahrscheinlich lesbarer ist, wenn Sie lange Titel haben.

Wenn dieses Array zu groß ist, können Sie es in eine andere Datei einfügen und es include .

Ja, du könntest das versuchen –

 foreach( $create_pages as $new_page ){ $content = "Default ". strtolower($new_page) ." page content"; $add_pages = array( 'post_title' => $new_page, 'post_content' => $content, 'post_status' => 'publish', 'post_type' => 'page' ); $page_id = wp_insert_post($add_pages); } 

Bearbeitungen:

In Bezug auf eine externe Logik könnten Sie Folgendes versuchen.

 foreach( $create_pages as $new_page ){ $content = "Default ". strtolower($new_page) ." page content"; // allow external filter to the page content. // filter names become available appending the page name with 'external_page_content_' $content = apply_filters( 'external_page_content_' . sanitize_title_with_dashes($new_page), $content ); $add_pages = array( 'post_title' => $new_page, 'post_content' => $content, 'post_status' => 'publish', 'post_type' => 'page' ); $page_id = wp_insert_post($add_pages); } 

Nun, um den Inhalt für eine Seite hinzuzufügen, zB: Über uns

 add_filter('external_page_content_about_us', 'my_about_us_page_content'); function my_about_us_page_content($content){ // here you can define your about us page content return $content; } 

Referenz:

  1. sanitize_title_with_dashes – stript den Platz mit Bindestrichen und nicht-alphanumerischen Zeichen und macht alle Buchstaben kleiner.
  2. apply_filters – dies wird verwendet, um Callback zu verlassen, wie wir es mit call_user_func tun

Hängt davon ab, was Sie davon abhängig machen wollen. Z.B

 < ?php foreach( $create_pages as $new_page ){ if ($new_page == 'Home') { $content = "Home is where the heart is"; } else { $content = "$new_page is going to be a great page."; } $add_page = array( 'post_title' => $new_page, 'post_content' => $content, 'post_status' => 'publish', 'post_type' => 'page' ); $page_id = wp_insert_post($add_page); } ?>