我制作了一个视频自定义帖子类型,并在编辑页面上放置了一个元框,在其中显示与帖子相关的短代码,以便于用户使用。
然而,我希望短代码和/或框仅在编辑贴子页面上可见,而不是在新贴子页面上可见,因为它还不相关-我在这里寻找什么?我有一种烦人的感觉,我以前也做过类似的事情,但就是想不出要搜索什么。
埃塔:这是我在下面的帮助下所做的,可能对其他人也有用:
add_action( \'add_meta_boxes\', \'my_video_add_custom_box\' );
function my_video_add_custom_box() {
if (get_post_status( $post->ID ) != \'auto-draft\') {
add_meta_box(
\'my_video_shortcode_custom_box\',
__( \'Shortcode\', \'my_video\' ),
\'my_video_shortcode_custom_box\',
\'my_video\', \'side\', \'default\'
);
}
}
很有魅力,谢谢!
SO网友:s_ha_dum
您的解决方案错误地发布为问题的编辑,给了我一个“未定义的变量”Notice
对于$post
. 它之所以有效,是因为get_post_status
最终,如果其他一切都失败了,assumes the global
variable $post
.
更好的解决方案是将条件从注册函数中移出并放入回调函数中,回调函数通过$post
由WordPress核心变量。
add_action( \'add_meta_boxes\', \'my_video_add_custom_box\' );
function my_video_add_custom_box() {
add_meta_box(
\'my_video_shortcode_custom_box\',
__( \'Shortcode\', \'my_video\'),
\'my_video_shortcode_custom_box\',
\'my_video\',
\'side\',
\'default\'
);
}
function my_video_shortcode_custom_box($post) {
if (get_post_status( $post->ID ) != \'auto-draft\') {
// your box code
}
}