WP日程安排活动-每天第一个访客到来时

时间:2016-03-31 作者:Sugantha

我有一个每日wp计划活动。

我知道,当用户访问该站点时,如果计划时间过去,就会发生这种情况。

如果我从今天上午12点开始,如果明天第一个访客明天凌晨1:20来,那么事件将发生在明天凌晨1:20。。

日复一日,它发生在凌晨1点20分之后还是凌晨12点之后。?

2 个回复
最合适的回答,由SO网友:David E. Smith 整理而成

wp-cron通常被称为伪cron,因为它没有严格的时间表。如果没有人访问该网站,它就不会运行。如果计划wp cron事件运行,例如每12小时运行一次,则最多每12小时运行一次。但是,如果你的站点流量很少,那么两次运行之间的间隔可能会远远超过12个小时。

如果您需要每12小时或每天同时发生一次事件,则需要使用WordPress之外的内容。常用的方法包括使用系统任务调度器(在Linux上,通常称为“cron”)或第三方服务,如EasyCron。

假设您在Linux服务器上(目前最常见的托管环境),请创建一个小的shell脚本,如下所示:

#!/bin/bash
curl http://yoursite.name.com/wp-cron.php >/dev/null
这将运行“curl”命令,以加载站点的wp cron。然后立即忽略结果(通过将输出转储到/dev/null)。您不关心页面可能具有的任何输出,事实上通常没有任何输出。您只需要确保页面已加载。

然后,在crontab中添加一行(“crontab-e”将在默认编辑器中打开crontab文件,可能是vi),如下所示:

0 0,12 * * *             /home/user/touch-site.sh
(显然,请将文件位置修改为您放置脚本的位置。此外,请通过运行“chmod 700 touch site.sh”确保脚本是可执行的。)

本例将每天中午和午夜(服务器时间)访问您的站点,并运行wp cron脚本。有关此文件工作方式的更多详细信息,请运行“man crontab”。

SO网友:Sumit

回答您的此查询

@sumit你确定吗?我的一个朋友说,如果今天发生在第二天凌晨1点20分,那将发生在凌晨1点20分之后,而不是12点

How it works:

<使用当前时间戳(即周一上午12:00)安排活动

wp_schedule_event(time(), \'daily\', \'my_schedule_hook\');
周一凌晨1:20有人访问了该网站。

请调用此代码

    if ( $schedule != false ) {
            $new_args = array($timestamp, $schedule, $hook, $v[\'args\']);
            call_user_func_array(\'wp_reschedule_event\', $new_args);
    }

    wp_unschedule_event( $timestamp, $hook, $v[\'args\'] );

   /**
    * Fires scheduled events.
    *
    * @ignore
    * @since 2.1.0
    *
    * @param string $hook Name of the hook that was scheduled to be fired.
    * @param array  $args The arguments to be passed to the hook.
    */
    do_action_ref_array( $hook, $v[\'args\'] );
它来了wp_reschedule_event() 函数,该函数使用相同的时间戳,因此下一个时间表将是星期二上午12:00NOT 1: 上午20点。然后它将调用调度操作挂钩。

人们常犯的错误是打电话wp_schedule_event() 直接进入functions.php 所以WP在每个新的时间戳上安排事件。正确的方法是检查是否有时间表,然后再创建它。

$my_schedule_hook = wp_next_scheduled(\'my_schedule_hook\');
if (!$my_schedule_hook) {
    wp_schedule_event(time(), \'daily\', \'my_schedule_hook\');
}
因此,它只会进入if 只有在第一次完全没有时间表时才阻止。您仍然可以通过此插件查看所有日程安排WP Crontrol

相关推荐

POST_ROW_ACTIONS不适用于分层帖子类型

我正在开发一个插件,其中注册了一个自定义帖子类型(CPT),我需要向该特定帖子类型添加自定义行操作。但无法将以下代码连接到post_row_actions 工作:function ttest_copy_button( $actions, $post ) { // var_dump($actions); if( \'ttest\' === $post->post_type ) { // pass nonce to check and ve