使WordPress页面仅对管理员可访问,重定向其他用户角色

时间:2014-04-02 作者:Omar Tariq

我需要重定向logged-innon-admin 用户,从id为172的页面,转到网站的主页。请注意,未登录的用户实际上可以看到该页面。

add_action(\'admin_init\', \'xyz\');
function xyz() {
    if( is_page( 172 ) ) {
             if( is_user_logged_in() && ! current_user_can(\'update_core\') ) {
        wp_redirect( home_url() );
        exit;
             }
    }   
}
问题:此代码无效。

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

admin_init 在管理页面上运行,而不是在前端。等效前端动作,init, 现在检查还为时过早is_page. 重定向的安全操作是template_redirect:

function xyz() {
    if( is_page( 172 )
        && ! current_user_can(\'update_core\') ) {
            wp_redirect( home_url() );
            exit;
    }   
}
add_action( \'template_redirect\', \'xyz\' );

结束

相关推荐

重写admin-ajax.php的规则

我浏览了很多帖子,在google上搜索了很多,但还是没能实现。我正在尝试为管理ajax创建一个重写规则。php,以实现此处所示的相同结果:Adding admin-ajax.php to the frontend. Good or bad idea?但是,我不想使用htaccess文件。相反,我需要通过动态添加规则(比如使用add\\u rewrite\\u rule)来实现这一点,例如,因为要调用的ajax函数位于我正在编写的插件中,我希望提供一个友好的URL来调用。我似乎遵循了有关该方法的所有最佳做法