添加未显示在新发布的自定义元框上的元框-未显示自定义元框

时间:2011-11-07 作者:Exit

这个问题困扰了我几个项目。我使用Codex中提供的默认Wordpress基于类的模板开始,并向外构建。我面临的唯一问题是,我的自定义元框在创建新帖子(添加帖子)时不会显示。这通常与自定义帖子类型结合使用,但正如Wordpress中的代码所示,它只使用一个常规的元框。

需要做什么才能确保在单击“添加新帖子”时显示?

<?php
/*
Plugin Name: TestPlug
Description: Blank
Author: No One
Version: 1.0
*/
function call_someClass() {
 return new someClass();
}
if ( is_admin() ) add_action( \'load-post.php\', \'call_someClass\' );

class someClass {
    public function __construct()
    {
        add_action( \'add_meta_boxes\', array( &$this, \'add_some_meta_box\' ) );
    }

    public function add_some_meta_box()
    {
        add_meta_box(
             \'some_meta_box_name\'
            ,\'Some Meta Box Headline\'
            ,array( &$this, \'render_meta_box_content\' )
            ,\'post\'
            ,\'advanced\'
            ,\'high\'
        );
    }

    public function render_meta_box_content()
    {
        echo \'<h1>TEST OUTPUT - this gets rendered inside the meta box.</h1>\';
    }
}
?>

4 个回复
最合适的回答,由SO网友:Kevin Langley Jr. 整理而成

我会在init甚至admin\\u init上创建该类的实例,而不是在load post上。php’。

钩住负载柱。php不会将框添加到新帖子中,只会添加已经保存的帖子。将元框仅添加到新帖子的正确挂钩是“load post new”。php’。

如果你想在新帖子和现有帖子上都显示元框,可以使用“添加元框”钩子。

SO网友:Hitesh Siddhapura

代替

if ( is_admin() ) add_action( \'load-post.php\', \'call_someClass\' );
使用

if ( is_admin() ) {
    add_action( \'load-post.php\', \'call_someClass\' );
    add_action( \'load-post-new.php\', \'call_someClass\'  );
}

SO网友:Jared

Edit: 我错了,admin\\u菜单不是您需要的。然而,在研究之后,我想到了一个对我有用的方法:

add_action( \'admin_init\', \'add_some_meta_box\', 1 );

function add_some_meta_box()
{
    add_meta_box(
         \'some_meta_box_name\'
        ,\'Some Meta Box Headline\'
        ,\'render_meta_box_content\'
        ,\'post\'
        ,\'normal\'
        ,\'high\'
    );
}

function render_meta_box_content()
{
    echo \'<h1>TEST OUTPUT - this gets rendered inside the meta box.</h1>\';
}
从类中删除它似乎可以让它工作,但不知道为什么,但它可能是一个bug?

SO网友:Tim Truston

顶层代码中的问题可能是您定义了“public function \\uu construct()”,但实际上从未调用过它。

结束