如何将Add_Meta_box添加到特定的页面模板?

时间:2013-01-21 作者:Ajay Patel

我想添加add_meta_box 至特定page 键入like页面模板,like产品模板。

我正在使用这篇文章http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ 尝试一下。

4 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

如果自定义页面模板文件名为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\' );
分配模板后,您只需指示用户保存页面,以便出现元框。

SO网友:omukiguy

我在上面的答案选项中发现了一些bug,但我在下面自定义了这个选项,它很有帮助-根本没有bug。

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

它很干净

SO网友:Julie Chaumard

这是一个具有页面名称的解决方案:

Accueil是页面的名称。

    $screens = [\'Accueil\'];
    foreach ($screens as $screen) {
     if ( get_the_title() == $screen ) {//condition
     add_meta_box(
      \'accueil_données\',
      \'Informations sur Orchestre\',
      \'metabox_accueil_infos\',
      \'page\',
      \'normal\',
      \'high\'
     );
   }
}
     

SO网友:Satrughna

function mcf_add_custom_metabox() {
    global $post;
    if ( $_REQUEST[\'post\'] == 30 ) {
        add_meta_box( \'shop_editor\', \' \', \'mcf_callback\', \'page\' );
    }
}
add_action( \'add_meta_boxes_page\', \'mcf_add_custom_metabox\' );
我找到了一种使用页面id在特定页面中添加metabox的方法。

结束

相关推荐

将内容添加到分类Metabox

我想将一些自定义内容添加到自定义分类法的默认元数据库中。理想情况下,我可以将此内容插入标记云上方的位置Choose from the most used [tag]s.在Wordpress中是否有符合“最佳实践”的方法来做到这一点?例如,有没有一种方法可以做到这一点,而不必删除和重新添加分类元盒的克隆,这是我在WPSE和其他地方看到的针对类似情况的推荐方法?在这种情况下,这似乎有点直截了当。我知道我可以用javascript插入内容,或者使用单独的元盒,但我想知道是否有一个钩子可以完成这类任务。