Show box only on edit post

时间:2013-11-19 作者:Linda H

我制作了一个视频自定义帖子类型,并在编辑页面上放置了一个元框,在其中显示与帖子相关的短代码,以便于用户使用。

然而,我希望短代码和/或框仅在编辑贴子页面上可见,而不是在新贴子页面上可见,因为它还不相关-我在这里寻找什么?我有一种烦人的感觉,我以前也做过类似的事情,但就是想不出要搜索什么。

埃塔:这是我在下面的帮助下所做的,可能对其他人也有用:

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\'
        );
    }
}
很有魅力,谢谢!

2 个回复
最合适的回答,由SO网友:sri 整理而成

使用get\\u post\\u status($ID)检查post状态,然后根据状态显示html代码。(即)您可以简单地在php模板文件中使用if-else条件,根据帖子状态显示不同的内容。我认为新帖子具有自动草稿状态。get_post_status抄本应该是有用的。

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
  }
}

结束

相关推荐