質問: 投稿を作成するときにデフォルトのカスタムフィールドを設定する方法はありますか? 新しい投稿を作成しているとき、 [add new]をクリックした直後 投稿エディタが表示されたときに、ドロップダウンを使用して使用するカスタムフィールドを選択する代わりに、デフォルトを設定します。カスタムフィールド入力はすでにオープンしています。視覚的には、私は何かが欲しいのですが:そのためのプラグイン(cpt、more fieldsなど)があることは知っていますが、基本的な機能でそれを行う簡単な方法が欲しいのです。私はこのようなことを試しました(私はカスタムの投稿タイプ 'product'を使用しています)。function register_custom_fields( $post_id ) { global $wpdb; if( !wp_is_post_revision( $post_id ) ) { add_post_meta( $post_id, 'reference', '', true); add_post_meta( $post_id, 'price', '', true); } } add_action('edit_product', 'register_custom_fields'); しかし、それはうまくいかないようです。 (edit_postは更新後に来るので)おそらくそのフックは間違っていると思いますが、(ユーザがwp adminで「new post」をクリックした直後に)「new post」のフックはありません。ありますか?それとも、考え全体が間違っていて、別の方法があるのでしょうか。
回答: save_postアクションを使用し、これがすべての投稿タイプで実行されるので、投稿タイプをチェックして操作を分離する必要があります。それがあなたのために働くようにするためにあなたがこれに組み入れなければならないであろうもう少し論理が明らかにある。デフォルトを1回設定したかどうかを確認する投稿メタフィールドを設定して、投稿メタフィールドを空白のままにしてもユーザーが不満を感じないようにする必要があります。(コード例のように)デフォルトをnullにしたい場合は、関数を作成しないでください。オーバーヘッドが増えるだけで、ポストメタフィールドにはデフォルトで値が入力されません。function register_custom_fields( $post_id ) { //do nonce checking here if( !wp_is_post_revision( $post_id ) ) { if('product' === $_request['post_type']){ $reference = $_request['reference'] ? esc_html($_request['reference']) : 'default_value'; $price = $_request['price'] ? esc_html($_request['price']) : 'default_value'; update_post_meta( $post_id, 'reference', $reference); update_post_meta( $post_id, 'price', $price); } } } add_action('save_post', 'register_custom_fields');