Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress PHP Cron作业_Php_Wordpress_Cron_Scheduled Tasks - Fatal编程技术网

Wordpress PHP Cron作业

Wordpress PHP Cron作业,php,wordpress,cron,scheduled-tasks,Php,Wordpress,Cron,Scheduled Tasks,我有一个将csv数据导入wordpress表的插件。它在Wordpress仪表板中运行,您可以在其中输入一些详细信息,然后单击按钮执行它 我修改了插件,使输入数据是静态的(每次都来自同一个csv),现在都位于一个php文件中。我想安排一个Cron作业,每小时左右执行一次这个脚本 我试图使用cPanel设置它,并直接访问php文件,但它不起作用(没有显示任何内容)。我相信这是因为插件使用了wordpress函数,比如wp\u insert\u post 如何将此脚本作为计划事件运行,就像它是通过w

我有一个将csv数据导入wordpress表的插件。它在Wordpress仪表板中运行,您可以在其中输入一些详细信息,然后单击按钮执行它

我修改了插件,使输入数据是静态的(每次都来自同一个csv),现在都位于一个php文件中。我想安排一个Cron作业,每小时左右执行一次这个脚本

我试图使用cPanel设置它,并直接访问php文件,但它不起作用(没有显示任何内容)。我相信这是因为插件使用了wordpress函数,比如wp\u insert\u post

如何将此脚本作为计划事件运行,就像它是通过wordpress dashboard运行的一样


注意:该文件还包含一些javascript。

您必须包含2个文件才能访问管理端函数:首先,wp-load.php。php设置好一切,并启动wordpress。但是,您是从内容目录(而不是管理目录)内的插件文件夹调用此函数的–因此,当调用wp load时,您将不在管理部分,也无法访问这些函数。好的一面是,你也不必处理WordPress强迫你登录的问题。因为您仍然需要这些管理函数,所以请包括wp admin/admin-functions.php。这将加载管理端,并允许您访问管理功能–您被设置为转到

您应该使用wp\u schedule\u event。请参阅WordPress codex中的以下内容:。使用类似以下内容:

            register_activation_hook(__FILE__, 'my_activation');
            add_action('my_hourly_event', 'do_this_hourly');

            function my_activation() {
                wp_schedule_event( time(), 'hourly', 'my_hourly_event');
            }

            function do_this_hourly() {
                // do something every hour
            }

您完全可以在
dou this\u hourly()
函数中调用PHP文件。

接受的答案对我来说很有效。我修改了这个,下面是我的发现。在这种情况下,您可以在插件场景之外使用此解决方案。基本上,您可以使用本机wordpress功能使用cron作业运行服务器,如下所示。您可以在wordpress应用程序的顶层创建一个文件,然后
include/wp-load.php在其中

这将加载到本机wordpress中,并允许您调用可以定义为必须使用插件的一部分的类。然后你就可以开始使用基本的wordpress功能了,比如
$wpdb
get\u usermeta()


现在您可以使用
$class\u variable=newyourclass实例化您的类并从中可以调用类函数。这其中最重要的一点是,您可以像通常在服务器上那样安排cron作业,当您这样做时,您可以像在wordpress中一样运行wordpress函数。这意味着您不需要将cron作业内容作为插件的一部分进行维护,这可能有用,也可能不有用,这取决于您在做什么

我认为如果使用普通的cron作业,JS不会被执行。除此之外,您还有两个选项可以执行此操作—添加
require_一次(dirname(dirname(dirname(dirname(u文件_u)))。/wp load.php)
并以相同的方式保留cron作业,或使cronjob成为
wget
调用
http://yoursite.com/?run_cron=randomCharactersHere
然后将脚本包装在
init
钩子回调中,并在其中检查
if(isset($\u GET['run\u cron'])和&$\u GET['run\u cron']=='randomCharactersHere'
。这取决于你,但是JS仍然不会被执行(你需要一个浏览器),非常感谢它像一个符咒一样工作:)对不起,我不能投票,没有足够的代表=/回答得好,老兄。你回答的一个变体对我很有效。干杯。非常感谢。如果我遇到更多的问题,我会考虑WordPress事件的一个失败——如果有人访问网站,它们只会被烧毁。如果他们访问的时间晚于要求的时间,那么他们将无法按时工作。但是他总是可以安排一个
wget
cron,以确保它能按时运行。的确,wp\u schedule\u事件任务只能在计划时间之后的第一次页面访问中执行。如果是每小时一次,则表示您每小时至少需要一名访客。