从仪表板获取正在编辑的当前帖子的ID

时间:2016-10-30 作者:BlackOut

我需要ID of the post 将加载到仪表板中进行编辑。get_the_IDget_queried_object() 似乎不起作用,即使这个函数应该也在循环外使用。

我需要帖子ID来阻止角色在仪表板中编辑此帖子,因此我可以执行以下操作:如果用户尝试加载的帖子ID==9,则将用户重定向到仪表板主页或死亡。

那么,如何获取用户试图加载的当前帖子的ID呢?

<小时>Edit:下面是我尝试的代码之一。如果角色匹配,则用户位于仪表板中,帖子的类别ID==20(假设has_category 如果未指定ID,则担任当前职务),然后死亡。

    add_action(\'admin_init\', \'bck_restrict_post\');
    function bck_restrict_post() {
        if (current_user_can(\'myrole\') && is_admin() && has_category(20) ) {
        wp_die();
      }    
   }
这很简单,但是has_category 不起作用。它不接受当前的帖子ID,没有任何更改。我也试过使用in_category(); 相同的结果。

1 个回复
最合适的回答,由SO网友:CK MacLeod 整理而成

下面是一个重定向到编辑帖子屏幕的简单示例。因为你要问的是如何获取帖子,所以我不关心消息或特定的重定向页面或其他变量,不过请注意wp\\u die()只会杀死页面。在我的测试中,它只会给你一个空白的。

无论如何,我认为在编辑帖子时,您需要的两件事是load-(page)挂钩和$\\u GET变量的ID:

add_action( \'load-post.php\', \'redirect_post_x\' ) ;

function redirect_post_x() {

    //if post ID = 99999: ID not cast as int here
    if ( $_GET[ \'post\' ] === \'99999\' ) {

        wp_redirect( admin_url( \'edit.php\' ) );
        exit;

    }

}

相关推荐

如何获取`COMMENT_POST_ID`?

我已经提取了回复电子邮件。原始电子邮件保存为CPT,并在我的插件中作为票据使用。我希望回复邮件作为对原始邮件的评论。 for($j = 1; $j <= $total; $j++){ $mail = $emails->get($j); //This checks if the email is reply or not and if the email is reply make it comment to its original post.