我使用以下方法阻止订阅者(和客户)访问我的站点的管理区域:
/**
* Redirect back to homepage and not allow access to WP admin for Subscribers.
*/
function xcsn_redirect_from_admin(){
if ( ( ! current_user_can( 'edit_posts' ) ) && ( ! is_checkout() ) ){
wp_redirect( site_url() );
exit;
}
}
add_action( 'admin_init', 'xcsn_redirect_from_admin' );它工作得很好,只不过它干扰了我的签出页面正在进行的ajax调用(WooCommerce)。显然,除非您拥有“编辑-posts”特权,否则呼叫暂停和结帐不能继续进行,这显然有悖于目的。
我的问题是:是否可以设置一个条件来处理像admin_init这样的早期调用,该调用允许ajax调用通过,但不允许将管理后端作为页面加载?
(如果标题不清楚,很抱歉--很难融入一个句子!)
发布于 2014-08-20 23:42:33
检查常量DOING_AJAX。当有人使用WordPress AJAX时,总是定义它。
if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
return;
if ( is_admin() )
add_action( 'admin_init', 'xcsn_redirect_from_admin' );https://wordpress.stackexchange.com/questions/158576
复制相似问题