質問: 特定のカスタム投稿タイプのメタデータのみを保存する方法 このチュートリアル に従ってカスタム投稿タイプを設定しようとしています。しかしながら、私はupdate_post_meta()をどのように/どこで実装するべきかと少し混乱しています。チュートリアルはこのパターンを示唆しています:add_action('save_post', 'save_my_metadata'); function save_my_metadata() { global $post; update_post_meta($post->id, 'my_metadata', $_post['my_metadata']); } これは機能しますが、メタデータがこのカスタムタイプに属しているかどうかにかかわらず、すべての投稿にそのメタデータを追加するという不幸な効果があります。上記をfunctions.phpに入れましたが、それが問題の一部かもしれないと思います。 「save_post」アクションを自分のカスタムタイプの投稿のみをトリガーするように制限する必要があると思います。
回答: @ john p blochと@eamannはすでにすばらしい回答をしています。 考えて meta_keysの前にアンダースコアを付ける。そうすると、編集後の画面に表示されるカスタムフィールドのリストからそれらが隠されます。 function save_my_metadata($ post_id、$ post = false){ if($ post-> post_type == 'your_post_type') update_post_meta($ post_id、 '_my_metadata'、$ _post ['my_metadata' ]); } もちろん、フィールドを編集できるようにするにはカスタムメタボックスが必要です。これがコンテキスト用の編集画面です。 あなたがすることができるもう一つのことは、特定の投稿タイプをより簡単に保存するためにあなた自身のフックを追加することです。すなわち、あなたのフックは "save_{$post_type}_post"であるかもしれません。 movie投稿タイプの場合はsave_movie_postになります。テーマのfunctions.phpファイルまたはプラグインのどこかに追加する必要があるものは次のとおりです。 add_action( 'save_post'、 'save_custom_post_type_posts'、10,2); 関数save_custom_post_type_posts($ post_id、$ post = false){ do_action( "save _ {$ post- > post_type} _post "); } それであなたはオリジナルのコードをそのように書き直すことができます(上記の#1のアンダースコアトリックを含む): add_action( 'save_my_postype_post'、 'save_my_postype_metadata'、10,2); 関数save_my_postype_metadata($ post_id、$ post){ update_post_meta($ post_id、 '_my_metadata'、$ _post ['my_metadata']); }