WP Einfügen nach PHP-function und Benutzerdefinierte Felder

Die WordPress-function wird verwendet, um Daten programmatisch zu übermitteln. Standardfelder zum Einreichen von Inhalt, Auszug, Titel, Datum und vieles mehr.

Wofür es keine Dokumentation gibt, wie man an ein benutzerdefiniertes Feld sendet. Ich weiß, dass es mit dem add_post_meta($post_id, $meta_key, $meta_value, $unique); function.

Aber wie wp_insert_post das in die Standardfunktion wp_insert_post ?

  $_SESSION['booking-form-title'], 'post_date' => $_SESSION['cal_startdate'], 'post_content' => 'This is my post.', 'post_status' => 'publish', 'post_type' => 'booking', ); wp_insert_post( $my_post ); ?> 

Solutions Collecting From Web of "WP Einfügen nach PHP-function und Benutzerdefinierte Felder"

Wenn Sie die Dokumentation für wp_insert_post lesen, wird die Post-ID des gerade erstellten wp_insert_post .

Wenn Sie das mit der folgenden function kombinieren: __update_post_meta (eine benutzerdefinierte function, die ich von dieser Site übernommen und ein wenig angepasst habe)

 /** * Updates post meta for a post. It also automatically deletes or adds the value to field_name if specified * * @access protected * @param integer The post ID for the post we're updating * @param string The field we're updating/adding/deleting * @param string [Optional] The value to update/add for field_name. If left blank, data will be deleted. * @return void */ public function __update_post_meta( $post_id, $field_name, $value = '' ) { if ( empty( $value ) OR ! $value ) { delete_post_meta( $post_id, $field_name ); } elseif ( ! get_post_meta( $post_id, $field_name ) ) { add_post_meta( $post_id, $field_name, $value ); } else { update_post_meta( $post_id, $field_name, $value ); } } 

Du bekommst folgendes:

 $my_post = array( 'post_title' => $_SESSION['booking-form-title'], 'post_date' => $_SESSION['cal_startdate'], 'post_content' => 'This is my post.', 'post_status' => 'publish', 'post_type' => 'booking', ); $the_post_id = wp_insert_post( $my_post ); __update_post_meta( $the_post_id, 'my-custom-field', 'my_custom_field_value' ); 

Sie können einfach ‘add_post_meta’ nach der ‘wp_insert_post’ hinzufügen

 < ?php $my_post = array( 'post_title' => $_SESSION['booking-form-title'], 'post_date' => $_SESSION['cal_startdate'], 'post_content' => 'This is my post.', 'post_status' => 'publish', 'post_type' => 'booking', ); $post_id = wp_insert_post($my_post); add_post_meta($post_id, 'META-KEY-1', 'META_VALUE-1', true); add_post_meta($post_id, 'META-KEY-2', 'META_VALUE-2', true); ?> 

Ich denke nicht, dass Sie es mit wp_insert_post (); verwenden können.

Der Grund dafür ist, dass WP die beiden Datentypen speichert. Beiträge werden in einer großen monolithischen Tabelle mit einem Dutzend verschiedener Spalten (wp_posts) gespeichert; Benutzerdefinierte Felder werden in einer einfacheren, vierspaltigen Tabelle (wp_postmeta) gespeichert, die hauptsächlich aus einem Metaschlüssel und einem Wert besteht, die einem Post zugeordnet sind.

Folglich können Sie benutzerdefinierte Felder nicht wirklich speichern, bis Sie die Post-ID haben.

Versuche dies:

 function myplugin_insert_customs($pid){ $customs = array( 'post_id' => $pid, 'meta_key' => 'Your meta key', 'meta_value' => 'Your meta value', ); add_post_meta($customs); } add_action('save_post', 'myplugin_insert_customs', 99); 

Dieser Codex Post half – es ist ein bisschen das Gegenteil von dem, was Sie tun (dh, löschen Sie eine DB Zeile nach dem Löschen): http://codex.wordpress.org/Plugin_API/Action_Reference/delete_post

Verwenden save_post Filter save_post und rufen Sie add_post_meta in Ihrer Filterfunktion auf.