限制后端但允许从前端使用post.php?action=DELETE&POST=POSTID

时间:2015-12-14 作者:Ohsik

限制后端。

add_action( \'init\', \'blockusers_init\' );
function blockusers_init() {
    if ( is_admin() && ! current_user_can( \'administrator\' ) && !( defined( \'DOING_AJAX\' ) && DOING_AJAX ) ) {
        wp_redirect( home_url() );
        exit;
    }
}
此代码将限制所有用户角色的后端,除了我想要的admin。然而,我想允许作者使用http://localhost:8888/wordpress/wp-admin/post.php?action=delete&post=63&_wpnonce=c67eff49b7 “删除”按钮上的链接。

是否可以为重定向排除该链接?所以作者可以从前端删除他们的帖子?

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

这将允许您访问post.php 并且仍然限制后端。您需要有操作,操作名称为delete, post键和值,以及WPONCE kay和值。否则,它会将您重定向到主页。

function disable_wp_admin() {

    if ( ! is_admin() )
        return;

    if ( current_user_can( \'manage_options\' ) )
        return;

    if (( current_user_can( \'edit_posts\' ) && defined( \'DOING_AJAX\' ) && DOING_AJAX ) )
        return;

    if ( \'post.php\' == isset( $_REQUEST[\'action\'] ) && \'delete\' == $_REQUEST[\'action\'] && isset( $_REQUEST[\'post\'] ) && isset( $_REQUEST[\'_wpnonce\'] ) )
        return;

    $redirect_to = home_url();
    wp_redirect( $redirect_to );
    exit;
}
add_action( \'init\', \'disable_wp_admin\' );

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。