我正在为我的WordPress站点创建一个自定义插件,它将运行一个查询。该插件将通过Wordpress的wp_schedule_event功能运行,每天运行。此查询将处理带有名为engine的自定义字段的wpcf-engine-days-to-go post类型。目前,我的代码不起作用(见下文)
目标
当自定义字段值post_status达到'0‘时,我想将wpcf-engine-days-to-go更新为“草案”。post_status值位于wp_posts表中,wpcf-engine-days-to-go位于wp_postmeta表中。
问题
在一个表中更新一个值的正确查询是什么,特别是在我的示例中?
register_activation_hook(__FILE__, 'tdengine_my_activation');
add_action('tdengine_my_daily_event', 'tdengine_do_this_daily');
function tdengine_my_activation() {
wp_schedule_event(time(), 'daily', 'tdengine_my_daily_event');
}
function tdengine_do_this_daily() {
global $wpdb;
$query = "UPDATE `" . $wpdb->prefix . "posts` SET `post_status`=`draft` WHERE `meta_key` = 'wpcf-engine-days-to-go' = 0 ";
$wpdb->query($query);
}
register_deactivation_hook(__FILE__, 'tdengine_my_deactivation');
function tdengine_my_deactivation() {
wp_clear_scheduled_hook('tdengine_my_daily_event');
}发布于 2015-07-28 04:59:41
实际上,您需要使用wp_update_post函数( post )。这将确保所有其他可能的钩子/过滤器在现在和将来都能根据需要启动。
而且,WordPress的cron可能有点古怪,因为它只基于用户访问(运行PHP时)触发。如果站点流量较低,则可能必须运行实际的服务器cron作业。
https://stackoverflow.com/questions/31664957
复制相似问题