add_meta_box を特定の page ページテンプレートのように、商品テンプレートのように追加したい。
私はそれを試すためにこの記事を使っています http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ .
カスタムページテンプレートのファイル名がfoobar.php
の場合は、get_post_meta()
を使用できます。
global $post;
if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
// The current page has the foobar template assigned
// do something
}
個人的には、これをadd_meta_boxes_page
コールバック内で呼び出し、それをadd_meta_box()
呼び出し自体でラップするのが好きです。
function wpse82477_add_meta_boxes_page() {
global $post;
if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
add_meta_box( $args );
}
}
add_action( 'add_meta_boxes_page', 'wpse82477_add_meta_boxes_page' );
メタボックスが表示されるように、テンプレートを割り当てた後に ページを保存する にユーザーに指示するだけで済みます。
私は上記の選択肢の上の答えでいくつかのバグを見つけましたが、私は下記のこのオプションをカスタマイズしました、そしてそれは助けました - 全くバグなし。
add_action('add_meta_boxes', 'add_product_meta');
function add_product_meta()
{
global $post;
if(!empty($post))
{
$pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
if($pageTemplate == 'page-templates/product-page.php' )
{
add_meta_box(
'product_meta', // $id
'Product Information', // $title
'display_product_information', // $callback
'page', // $page
'normal', // $context
'high'); // $priority
}
}
}
function display_product_information()
{
// Add the HTML for the post meta
}
https://paulund.co.uk/display-post-meta-box-specific-page-templates
きれいです
これはページの名前の解決策です:
Accueilはページの名前です。
$screens = ['Accueil'];
foreach ($screens as $screen) {
if ( get_the_title() == $screen2 ) {
add_meta_box(
'accueil_données',
'Informations sur Orchestre',
'metabox_accueil_infos',
'page',
'normal',
'high'
);
}
}