我需要ID of the post 将加载到仪表板中进行编辑。get_the_ID
或get_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()
; 相同的结果。
最合适的回答,由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;
}
}