我想打开我网站的某些部分,剩下的页面只能作为网站管理员访问。
我制作了一个维护插件,一切正常。然而,我无法过滤用户访问的页面。
我想打开一个特定的产品类别,以及属于这个类别的所有产品。
如果我没有以管理员身份登录,则无法访问产品类别及其所属的产品。
我的代码如下-任何人都可以看到我做错了什么?
谢谢
<?php
@return void
function ng_maintenance_mode() {
global $pagenow;
if ( ! current_user_can(\'administrator\') ) {
if ( $pagenow !== \'wp-login.php\' && ! is_product_category( 232 ) && ! has_term( 232, \'product_cat\' ) {
header( $_SERVER["SERVER_PROTOCOL"] . \' 503 Service Temporarily Unavailable\', true, 503 );
header( \'Content-Type: text/html; charset=utf-8\' );
if ( file_exists( plugin_dir_path( __FILE__ ) . \'views/maintenance.php\' ) ) {
require_once( plugin_dir_path( __FILE__ ) . \'views/maintenance.php\' );
}
die();
}
}
}
add_action( \'wp_loaded\', \'ng_maintenance_mode\' );
?>
最合适的回答,由SO网友:Paul G. 整理而成
您需要更换以下部件:
if ( ! current_user_can(\'administrator\') ) {
具有
if ( ! current_user_can(\'manage_options\') ) {
这是因为没有这样的能力
administrator
. 有几个仅限管理员使用的功能,以及
manage_options
是一种可靠的使用方法。