WP维护模式和外部cron作业

时间:2020-11-26 作者:Daniele As

我正在使用此代码

add_action( \'wp_loaded\', function() 
{
    global $pagenow;

    // - - - - - - - - - - - - - - - - - - - - - - 
    // Turn on/off you Maintenance Mode (true/false)
    define(\'IN_MAINTENANCE\', true);
    // - - - - - - - - - - - - - - - - - - - - - - 

    if(
        defined( \'IN_MAINTENANCE\' )
        && IN_MAINTENANCE
        && $pagenow !== \'wp-login.php\'
        && ! is_user_logged_in()
    ) {
        header(\'HTTP/1.1 503 Service Temporarily Unavailable\');
        header( \'Content-Type: text/html; charset=utf-8\' );
        if ( file_exists( get_template_directory() . \'/maintenance.php\' ) ) {
            require_once( get_template_directory() . \'/maintenance.php\' );
        }
        die();
    }
});
在自定义插件中临时将站点置于维护模式。它工作得很好,但我使用cron作业和对wp cron的外部调用。php文件。是否有任何方法可以绕过仅针对wp cron的维护模式。php文件?也许我完全错了,但感谢所有人的意见!

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

您可以使用wp_doing_cron() 方法来确定请求是否来自cron请求。

if(
    defined( \'IN_MAINTENANCE\' )
    && IN_MAINTENANCE
    && $pagenow !== \'wp-login.php\'
    && ! is_user_logged_in()
    && ! wp_doing_cron()
) {

相关推荐

WordPress控制台应用程序(只能通过crontabb执行自定义函数)

我在数据库中有一些自定义表,我需要不时清理过期的数据。如果我使用的是WP-Cron,这将很容易,但WP-Cron很差劲,是不可能的(尤其是对于我正在做的事情)。考虑到这一点,我需要使用crontab. 我应该如何以干净、有效的方式做到这一点,而不需要恶意的黑客攻击?我在考虑创建一个REST端点,但如何保护它,使其只能由crontab打开?解决方案应该放在插件文件夹中,这样就可以轻松地存储在GIT中(例如,在主文件夹中存储文件的讨厌的解决方法(也称为public_html) 不受欢迎)。一直在寻找一个好的解