用php实现WooCommerce维护模式

时间:2021-06-09 作者:Oscar S.

我想打开我网站的某些部分,剩下的页面只能作为网站管理员访问。

我制作了一个维护插件,一切正常。然而,我无法过滤用户访问的页面。

我想打开一个特定的产品类别,以及属于这个类别的所有产品。

如果我没有以管理员身份登录,则无法访问产品类别及其所属的产品。

我的代码如下-任何人都可以看到我做错了什么?

谢谢

<?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\' );

?>

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

您需要更换以下部件:

if ( ! current_user_can(\'administrator\') ) {

具有

if ( ! current_user_can(\'manage_options\') ) {

这是因为没有这样的能力administrator. 有几个仅限管理员使用的功能,以及manage_options 是一种可靠的使用方法。

相关推荐