我们正在创建一个插件,例如,它在所有post类型上显示一个metabox。为了开场,我正在使用起动机工具包。
在post页面上,我看到了metabox,但没有回调函数。
在functions.php中移动代码,使用add_action( 'admin_init','wpd_add_meta_box'),一切都正常。
如何从类中的插件中呈现metabox的内容?谢谢。
发布于 2019-08-21 07:59:15
global_box_meta_box_callback()是类方法(即类内的函数),而不是全局定义的函数,因此在向add_meta_box()提供类方法时需要使用[ $this, 'global_box_meta_box_callback' ] (或array( $this, 'global_box_meta_box_callback' )):
class Foo
{
...
function wpd_add_meta_box() {
$screens = get_post_types();
foreach ( $screens as $screen ) {
add_meta_box(
'global-notice',
__( 'Global Box ', 'global-box' ),
[ $this, 'global_box_meta_box_callback' ], // correct
// 'global_box_meta_box_callback', // incorrect
$screen,
'advanced',
'high'
);
}
}
function global_box_meta_box_callback( $post ) {
// your code here
}
}有关使用/提供可调用/回调的详细信息,请参阅PHP -在您的示例中,我们使用的是手册方法调用(请参阅/查找手册中的// Type 3: Object method call )。
https://wordpress.stackexchange.com/questions/345509
复制相似问题