有一个自定义记录类型,其中存储了 14 条记录,(从周一到周日的第一周和从周一到周日的第二周)每条记录都有一个“周数”字段 - 1 或 2,并且使用 acf 转发器是created,在该行中有名称和2个数字字段,第一个是不断变化的,第二个字段是您需要根据时间表根据第一个字段将值带到的字段(例如,一次小时)。我使用 wp_cron,结果是这样的。
$parameters = array(
'post_type_schedule' => 'schedule'
);
if( !wp_next_scheduled( 'hook_update_schedule_everyweek', $parameters ) )
wp_schedule_event( time(), 'user_everyweek', 'hook_update_schedule_everyweek', $parameters );
add_action( 'hook_update_schedule_everyweek', 'update_schedule', 99, 1 );
function update_schedule( $post_type_schedule) {
// здесь получаю 7 из 14 постов где номер недели предыдущий (в данном случае 1)
$prev_week = 1;
$posts_last_week = new WP_Query(array(
'post_type' => 'schedule',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'number-week',
'value' => $prev_week
)
)
));
// дальше нужно каким то образом пробежаться по массиву всех строк по всем постам и заменить значение
// взяв из count в той же строке и записать в remain
foreach ($posts_last_week->$posts as $post_i => $post) {
setup_postdata($post);
$i = 0;
while (have_rows('schedules', $post->ID)) {
the_row();
$row = get_row();
$i++;
$row['remain'] = get_sub_field('count');
update_row('schedules', $i, $row);
}
}
wp_reset_postdata();
}
我使用 acf 插件,要么我不知道如何更新中继器中的字段,要么使用它的方法根本不可能做到这一点。告诉我如何做到这一点?
对循环进行了一些修改。我在循环条件中发现了一个错误
foreach并重新设计了循环while,结果如下