メタ ボックス プラグインを使用して、メタ ボックスが特定の分類法を持つページにのみ表示されるように制限する方法はありますか?
$meta_boxes[] = array(
'id' => 'sponsor_list',
'title' => 'Sponsors',
'pages' => array( 'page' ),
'context' => 'normal',
'priority' => 'high',
'fields' => array(
array(
'name' => 'Sponsor Logos',
'desc' => 'Upload sponsor logos here',
'id' => $prefix . 'sponsor_logos',
'type' => 'image'
)
)
);
これは機能しますが、すべてのページに表示されます。特定の分類法を持つページにのみメタ ボックスが表示されるようにしたいと考えています。これは可能ですか、それとも、ページの post_type で新しい CPT を作成し、それにメタボックスを添付することを意味しますか?
アップデート
分類法はこちら
// Location taxononomy
function create_artists_sites()
{
$labels = array(
'name' => _x( 'Festival Sites', 'taxonomy general name' ),
'singular_name' => _x( 'Festival Site', 'taxonomy singular name' ),
'search_items' => __( 'Search Festival Sites' ),
'all_items' => __( 'All Festival Sites' ),
'parent_item' => __( 'Parent Festival Sites' ),
'parent_item_colon' => __( 'Parent Festival Sites:' ),
'edit_item' => __( 'Edit Festival Site' ),
'update_item' => __( 'Update Festival Site' ),
'add_new_item' => __( 'Add New Festival Site' ),
'new_item_name' => __( 'New Festival Site Name' ),
'menu_name' => __( 'Festival Sites' ),
);
register_taxonomy('artists_sites', array('page'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'artists-sites' ),
));
}
全ページにメタボックスを追加しました
$meta_boxes[] = array(
...
'pages' => array( 'page' ),
メタの条件が必要です
if(any festival taxonomy is checked) {
show meta box
} else {
don't show meta
}
最終的な目標は、CMS の特定のページに関連しないメタ ボックスを持たないことです。
さらに考えてみると、それはページテンプレートの条件でもある可能性があります。
テンプレート付きのページがあるとしましょう: ランディング
次に、条件は次のようになります。
if(page has landing template) {
show meta box
} else {
don't show meta
}