web-dev-qa-db-ja.com

ポストパブリッシュ/アップデート時にカスタムフィールドの値を自動的に入力

私は少し検索しましたが、この質問に対する答えを見つけるのが困難です。私がやろうとしているのは、投稿(カスタム投稿タイプ)が更新または公開されたときにカスタムフィールドに自動的に入力することです。理想的には、完成したスクリプトはAPIを呼び出し、投稿が作成または更新されるたびにカスタムフィールドに結果の情報を入力します。しかし今のところ、私はテスト用の単純な文字列を自分のカスタムフィールドに自動的に入力しようとしています。これが私のコードです:

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);    
    }
}

私は参照としてこのページを使いました: http://www.wpbeginner.com/wp-tutorials/how-to-add-custom-fields-automatically-on-post-publish-in-wordpress/ 残念ながらそれは機能していません。投稿を公開または保存しても、 'market_value'カスタムフィールドは空のままです(また、カスタムフィールドの作成にはAdvanced Custom Fieldsを使用しています)。何か案は?ありがとうございます。

3
Steve Dimock

add_meta_box を参照してください。メタフィールドを扱うためのデモコードがたくさんあります。これがあなたにとって最も重要な部分です。

/* 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