Server-Based CRON Job

时间:2020-10-21 作者:Thomas

我们希望将在WordPress中触发的CRON作业移动到基于服务器的作业。现在,代码存在于函数中。php文件,我们使用WPCrontrol插件进行调度。它运行良好,没有问题。问题是代码中有WooCommerce挂钩。基于服务器的作业不知道如何处理WC_Orders, 例如我们如何解决这个问题?

2 个回复
SO网友:xuan hung Nguyen

我认为您可以通过以下方式解决此问题:

步骤1:创建一个PHP页面,在主题中使用您想要的URL(Page URL custom cron.PHP)调用钩子WooCommerce步骤2:使用基于服务器的作业对URL进行卷曲:http://yourdomain/url-custom-cron.现在PHP代码页将为您调用WooCommerce挂钩

SO网友:Thomas

以下是解决方案:

创建了一个文件(run\\cron.php),该文件通过cURL调用了我需要运行的作业,并将其放置在子主题文件夹中:cURL:

<?php
  define(\'RUN_CRON_URI\', \'https://path-to-file-to-be-executed/process_orders.php\');

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => RUN_CRON_URI,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_SSL_VERIFYPEER => false,
      CURLOPT_SSL_VERIFYHOST => false
  ]);

  $result = curl_exec($curl);

  if (curl_error($curl)) {
      throw new Exception(curl_error());
  } else {
      $httpStatusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
      if ($httpStatusCode != 200) {
          throw new Exception(\'Submission failed with this status: \' . $httpStatusCode);
      } elseif (stripos($result, \'error\') !== false) {
          throw new Exception(\'Error detected: \' . $result);
      }
  } ?>
将要执行的作业移动到父主题文件夹中。

在打开和关闭PHP标记的可执行文件顶部添加了以下内容:

/***@package OceanWP WordPress主题*/需要\\u一次(“../../../../wp load.php”);

其余代码。。。

相关推荐

Wp-cron和执行is_admin()包含的脚本中的代码

我正在开发一个插件。其后端设置允许管理员从第三方数据提供商更新站点数据文件,或打开/关闭wp cron作业以自动完成此操作。在此(简化)代码中I assume my wp-cron job will only be run if someone logs in to the WP Dashboard? (不是我真正想要的)if (is_admin()) { include \'my_update_script.php\'; include \'settings_form_stuff