web-dev-qa-db-ja.com

分類法の用語に応じてカスタムポイントテンプレートでメタボックスを表示する

それに対する解決策があるかどうか私にはわかりませんが、私はとにかくそれを尋ねます:)

私はカスタムポストテンプレートとそれに関連するカスタム分類法を構築しました。分類法はcustom-post-templateの一種の「カテゴリ」として機能します。

分類法には「車、家、木」という用語があります。

私は私のカスタムポストテンプレートにカスタムメタデータを追加するためにmetaboxesを使います。

さまざまなメタボックスをさまざまな課税条件で表示することが可能かどうかと思いますか。

例えば私のcustom-post-templateを使って新しい投稿を作成し、 "car"カテゴリーをチェックするとき、追加のデータを入力するための追加のmetaboxが欲しいです。このメタボックスは、投稿がその分類法の中の用語に関連付けられている場合にのみ表示されます。

それはどういうわけか可能ですか?

ありがとうございました!

1
mathiregister

この質問はおそらく重複しています: 他のメタボックスのdate-valueが終わったときにのみメタボックスを表示しますか?

これを実現するには、大きく2つの方法があります。 add_meta_boxesフックを使用して、投稿タイプと投稿の2つの変数を渡します。投稿に特定の用語がある場合にのみメタボックスを追加します。

add_action( 'add_meta_boxes', 'myplugin_add_my_custom_box',10,2);

function myplugin_add_my_custom_box($post_type,$post){

 //Check if post has 'car' term from 'my-tax' taxonomy. If not don't add metabox.
 if( ! has_term( 'car', 'my-tax', $post ) )
     return

 add_meta_box( 
    'myplugin_sectionid',
    __( 'My Post Section Title', 'myplugin_textdomain' ),
    'myplugin_metabox_callback',
    'event' 
);      
}

このアプローチの利点は、より安定していることです - JavaScriptに頼らず、単にメタボックスを隠すことよりも汚れが少ないことです。 Javascriptを使用する利点は、それを「ライブ」にすることができるということです(したがって、「car」という用語を追加するとその用語が表示され、削除すると表示されなくなります)。

注:非表示にするときは、非表示のメタボックスに自分やWordPressが保存したデータが投稿されないように、値をすべて消去する必要があります。

この方法はここで説明されています: 選択されたページテンプレートに基づいて管理メタボックスを切り替えます

2
Stephen Harris