3

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

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

我尝试使用 cPanel 设置它并直接访问 php 文件,但它不起作用(没有显示)。我相信这是因为该插件使用了 wp_insert_post 等 wordpress 功能。

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

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

4

3 回答 3

4

您必须包含 2 个文件才能访问管理端功能:首先,wp-load.php。wp-load.php 设置好所有内容,并启动 wordpress。但是,您是从插件文件夹中调用此函数,在内容目录(而不是 admin 目录)内 - 所以当 wp-load 被调用时,您不会在 admin 部分,也不会获得访问权限到那些功能。从好的方面来说,您也不必处理 WordPress 强迫您登录。由于您仍然需要这些管理功能,请包括 wp-admin/admin-functions.php。这会加载管理端并让您访问管理功能 - 您准备好了

于 2012-12-06T09:55:31.057 回答
2

You should use wp_schedule_event. See in WordPress codex here : http://codex.wordpress.org/Function_Reference/wp_schedule_event. Use something like this:

            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
            }

You can perfectly call a PHP file inside your do_this_hourly() function.

于 2012-12-06T10:24:27.960 回答
0

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

这会在原生 wordpress 中加载,并允许您调用一个可以定义为必须使用插件的一部分的类。然后你就可以开始使用基本的 wordpress 功能了,比如$wpdbget_usermeta()

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

于 2013-04-17T01:09:39.187 回答