我有一个自定义的帖子类型(“fecha”),其中包含过去的事件(名人的生日、历史日期等)。在这些帖子中,一个自定义字段(“aniversario”)计算自原始日期起已经过去了多少年。
该值在创建和保存帖子时存储,因此我需要每年更新这些自定义帖子(全部),以便该自定义字段保持有效。我尝试使用cron(带有每日时间表)调用update\\u post\\u meta,但没有成功。这些自定义帖子类型中的所有帖子都是私有的,只显示在管理端。
该网站是针对非商业人士的个人网站(我是一名自由撰稿人,这是一次建立个人编辑日历的尝试,这对我有很大帮助)
如果有任何帮助可以指出代码中的错误或缺少的内容,那就太好了。代码如下(位于my functions.php中):
function run_update_fecha_cron_job() {
$posts = get_posts([
\'post_type\' => \'fecha\',
\'post_status\' => \'any\',
\'posts_per_page\' => -1, // getting all posts of a post type
\'no_found_rows\' => true, // speeds up a query significantly and can be set to \'true\' if we don\'t use pagination
\'fields\' => \'ids\' // again, for performance
]);
// now check meta and update custom fields for every post
foreach ($posts as $post_id) {
/*
* calculate how many years have passed by sustracting the value from
* another custom field called "wpcf-ano" to current year, then store calculated value in
* variable "$aniversario", wich should be "1" if nothing is stored in "wpcf-ano"
*/
$ano = get_post_meta($post_id, \'wpcf-ano\', TRUE);
if (!empty($ano)) {
$year_diff = date("Y") - $ano;
$aniversario = $year_diff;
} else {
$aniversario = 1;
}
// update custom field
update_post_meta($post_id, \'aniversario\', $aniversario);
}
}
// Schedule Cron Job Event
function update_fecha_cron_job() {
if (!wp_next_scheduled(\'run_update_fecha_cron_job\')) {
wp_schedule_event(current_time(\'timestamp\'), \'daily\', \'run_update_fecha_cron_job\');
}
}
add_action(\'wp\', \'update_fecha_cron_job\');
add_action(\'run_update_fecha_cron_job\', \'run_update_fecha_cron_job\');