我已经创建了一个定义,我可以启用和禁用WP维护模式的真假。登录用户和可以编辑主题的人可以访问该网站。
但出于某种原因..。函数将始终返回"false“。即使是对和错的设定。
我是不是漏掉了什么?
代码:
<?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');发布于 2021-03-11 13:39:32
我把这当成一个真值表。您有三个变量A、B、C,当前的语句表示(A ∧ B ∨ C),这不是您想要的。相反,(A ∧ (B ∨ C))的真值表是您想要的。也就是说,如果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我相信您要查找的代码是(只有在为真的情况下才为函数):
<?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语句中,这样就不会得到未定义的函数错误。
https://stackoverflow.com/questions/66582833
复制相似问题