我认为这是一个真值表。您有三个变量 A、B、C 并且当前语句说 (A ∧ B ∨ C) 这不是您想要的。相反,(A ∧ (B ∨ C)) 的真值表是您想要的。那就是说 IF NM_ENABLE_MAINTENANCE_MODE 是 true 并且用户无法编辑主题或用户未登录显示页面。所以他们可以登录但不允许编辑主题然后他们应该看到页面。
A = NM_ENABLE_MAINTENANCE_MODE 的常量
B = current_user_can('edit_themes') 的倒数(因此无法编辑主题)
C = is_user_logged_in() 的倒数(因此未登录)
A B C SHOW PAGE
T T T T
T T F T
T F T T
T F F F
F T T F
F T F F
F F T F
F F F F
我相信您正在寻找的代码是(仅当 IF 为真时才起作用):
<?php
// Enable maintenance mode
define('NM_ENABLE_MAINTENANCE_MODE', false);
if(NM_ENABLE_MAINTENANCE_MODE && (!current_user_can('edit_themes') || !is_user_logged_in())) {
function wp_maintenance_mode() {
wp_die('<h1>' . NM_MAINTENANCE_TITLE . '</h1>' . '<p>' . NM_MAINTENANCE_MESSAGE) . '</p>';
}
add_action('get_header', 'wp_maintenance_mode');
}
如果您希望该功能始终可用,请编写代码:
<?php
// Enable maintenance mode
define('NM_ENABLE_MAINTENANCE_MODE', false);
function wp_maintenance_mode() {
if(NM_ENABLE_MAINTENANCE_MODE && (!current_user_can('edit_themes') || !is_user_logged_in())) {
wp_die('<h1>' . NM_MAINTENANCE_TITLE . '</h1>' . '<p>' . NM_MAINTENANCE_MESSAGE) . '</p>';
}
}
add_action('get_header', 'wp_maintenance_mode');
编辑:将 add_action 移到 IF 语句中,这样您就不会收到未定义的函数错误。