Wordpress PHP Cron工作

时间:2012-12-06 09:21:28

标签: php wordpress cron scheduled-tasks

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

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

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

如何运行此脚本,就好像它是通过wordpress仪表板一样运行,作为预定事件?

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

3 个答案:

答案 0 :(得分:4)

您必须包含2个文件才能访问管理员端功能:首先,wp-load.php。 wp-load.php可以设置所有内容,并启动wordpress。但是,您正在内容目录中的插件文件夹(而不是管理目录)中调用此函数 - 所以当调用wp-load时,您不会进入管理部分,也不会访问这些功能。好的一面是,您也无需处理WordPress强制您登录。由于您仍然需要这些管理功能,请包含wp-admin / admin-functions.php。这会加载管理员端并允许您访问管理功能 - 并且您将设置为

答案 1 :(得分:1)

您应该使用wp_schedule_event。请参阅WordPress codex:http://codex.wordpress.org/Function_Reference/wp_schedule_event。使用这样的东西:

            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
            }

您可以在do_this_hourly()功能中完美地调用PHP文件。

答案 2 :(得分:0)

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

这将加载到原生wordpress中,并允许您调用一个类,您可以将其定义为必须使用的插件的一部分。然后,关于基本的wordpress功能,例如$wpdbget_usermeta()

,你就可以了

现在您可以使用$class_variable = new YourClass;实例化您的类,然后您可以调用类函数。关于这一点的重要之处在于,您可以按照通常在服务器上的方式安排cron作业,并且当您执行时,您可以像在wordpress中一样运行wordpress功能。这意味着您不需要将您的cron作业内容作为插件的一部分进行维护,这可能会也可能没有用,具体取决于您的操作。