这似乎是微不足道的,但我无法找到解决方案。
我有帖子的自定义过滤器。并非每个用户都可以编辑每个帖子。它取决于自定义元标记。 (这不是那么重要)
重要的是,如果他们使用像“
”这样的URL/edit.php?post=467
他们可以找到我没有允许他们发布的帖子。
我正在寻找的是,是否有可能像
那样获取URLadmin_init
所以我可以做类似
的事情if (!isset($_GET['post'])){ //redirect }
或
if ($_GET['post'] == $forbidenID) { //redirect }
谢谢你们。 : - )
答案 0 :(得分:1)
尝试类似:
**快速提示:你说如果isset($_GET['post'])
正确,你想要重定向..在你的例子中,你说!isset($_GET['post'])
所以要验证你的意思。
function restrict_admin_with_redirect() {
if (isset($_GET['post'])) {
wp_redirect( site_url() );
exit;
}
}
add_action( 'admin_init', 'restrict_admin_with_redirect', 1 );
/////////////////////////////////////////////// ////////////////////////////// ////////////////////////////////////////////////// ///////////////////////////
其他信息:
如果正在执行的页面不在管理区域,而是在WordPress的前端,就像普通页面或帖子一样:
可以使用一些钩子。您也可以选择对主题的header.php
文件进行编辑。
查看the_content
过滤器:https://codex.wordpress.org/Plugin_API/Filter_Reference/the_content
您可以将其添加到functions.php
文件中(最好,您应该使用子主题,因此如果主题更新,则不会覆盖更改。)
function my_the_content_filter($content) {
if (isset($_GET['post'])){
return 'You do not have access to this page.';
}
// otherwise returns the database content
return $content;
}
add_filter( 'the_content', 'my_the_content_filter' );
或者在header.php文件的最开头(在输出任何html之前),添加如下内容:
if (isset($_GET['post'])){
wp_redirect( {url to redirect to} );
exit();
}