it-swarm.com.de

Benutzerdefinierten Feldwert beim Veröffentlichen/Aktualisieren automatisch ausfüllen

Ich habe ein bisschen gesucht und habe Probleme, eine Antwort auf diese Frage zu finden. Ich versuche, automatisch ein benutzerdefiniertes Feld auszufüllen, wenn ein Beitrag (benutzerdefinierter Beitragstyp) aktualisiert oder veröffentlicht wird. Im Idealfall ruft das fertige Skript eine API auf und füllt das benutzerdefinierte Feld mit den resultierenden Informationen, wenn ein Beitrag erstellt oder aktualisiert wird. Im Moment versuche ich nur, mein benutzerdefiniertes Feld zum Testen automatisch mit einer einfachen Zeichenfolge zu füllen. Hier ist mein Code:

add_action( 'save_post', 'update_tmv' );
function update_tmv($postid) {
    if ( !wp_is_post_revision( $postid ) && get_post_type( $postid ) == 'inventory') {
        $field_name = 'market_value';
        add_post_meta($postid, $field_name, 'TEST_STRING', true);    
    }
}

Ich habe diese Seite als Referenz verwendet: http://www.wpbeginner.com/wp-tutorials/how-to-add-custom-fields-automatically-on-post-publish-in-wordpress/ but Leider funktioniert es nicht. Wenn ich einen Beitrag veröffentliche oder speichere, ist das benutzerdefinierte Feld 'market_value' weiterhin leer (außerdem verwende ich erweiterte benutzerdefinierte Felder, um die benutzerdefinierten Felder zu erstellen). Irgendwelche Ideen? Vielen Dank!

3
Steve Dimock

Siehe add_meta_box , das eine Menge Demo-Code für die Arbeit mit Metafeldern enthält. Hier ist der für Sie relevanteste Teil:

/* Do something with the data entered */
add_action( 'save_post', 'myplugin_save_postdata' );

/* When the post is saved, saves our custom data */
function myplugin_save_postdata( $post_id ) {

  // First we need to check if the current user is authorised to do this action. 
  if ( 'page' == $_POST['post_type'] ) {
    if ( ! current_user_can( 'edit_page', $post_id ) )
        return;
  } else {
    if ( ! current_user_can( 'edit_post', $post_id ) )
        return;
  }

  $mydata = 'something'; // Do something with $mydata 

  update_post_meta( $post_id, '_my_meta_value_key', $mydata );
}
5
Matthew Boynes