在cronjob脚本的顶部(例如:my-cron.php
), 执行以下操作:
if ( ! defined(\'ABSPATH\') ) {
/** Set up WordPress environment */
require_once( dirname( __FILE__ ) . \'/wp-load.php\' );
}
然后在服务器中按如下方式设置cron:
5 * * * * wget -q -O - http://your-domain.com/my-cron.php
Note: 也许您试图将cron作为PHP命令行(CLI)运行,但这行不通。您需要以HTTP请求的形式运行cron(使用
wget
或
curl
), 如上所示。
有关更多信息read this official WordPress document.
更新:
根据新添加的代码,我可以看出此代码是错误的:
register_activation_hook( __FILE__, \'OA_FeedManager_activated\' );
function importpicture_activated() {
if ( ! wp_next_scheduled( \'import_feed\' ) ) {
wp_schedule_event( time(), \'hourly\', \'import\' );
}
}
add_action( \'import\', \'call_import\' );
function call_import() {
// lots of code
}
你检查过了
if ( ! wp_next_scheduled( \'import_feed\' ) )
但你正在安排
add_action( \'import\', \'call_import\' );
. 要使cron正常工作,必须注册相同的操作
import
. 此外,您的激活挂钩是
OA_FeedManager_activated
, 确保它运行
importpicture_activated
作用因此,代码应该如下所示:
register_activation_hook( __FILE__, \'OA_FeedManager_activated\' );
function OA_FeedManager_activated() {
importpicture_activated();
}
function importpicture_activated() {
if ( ! wp_next_scheduled( \'import\' ) ) {
wp_schedule_event( time(), \'hourly\', \'import\' );
}
}
add_action( \'import\', \'call_import\' );
function call_import() {
// lots of code
}
要检查cron是否正确注册,可以使用
control plugin. 此外,激活
WP debugging 查看代码生成的错误。
Note:对于未定义的函数wp_generate_attachment_metadata()
错误check Mark\'s 答复
此外,由于您已经在插件的激活挂钩中安排了cron,因此如果更改激活挂钩功能,则必须先停用该插件,然后再次激活该插件。使用Crontrol插件,确保没有在后端注册不必要的cron。
最后,检查是否存在wp-config.php
你有define( \'DISABLE_WP_CRON\', true );
. 您必须将其删除(如果有)或设置为false
, 如果希望WP cron在正常WP负载下运行。否则,您需要使用OS crontab设置cron(如我的答案开头所示)