这个问题困扰了我几个项目。我使用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>\';
}
}
?>
最合适的回答,由SO网友:Kevin Langley Jr. 整理而成
我会在init甚至admin\\u init上创建该类的实例,而不是在load post上。php’。
钩住负载柱。php不会将框添加到新帖子中,只会添加已经保存的帖子。将元框仅添加到新帖子的正确挂钩是“load post new”。php’。
如果你想在新帖子和现有帖子上都显示元框,可以使用“添加元框”钩子。
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?