繁体   English   中英

Wordpress PHP Cron工作

[英]Wordpress PHP Cron jobs

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

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

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

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

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

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

你应该使用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文件。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM