Добрый день. Как получить ID поста и обновить записи update_post_meta по расписанию?
// регистрируем интервал 24 часа
add_filter( 'cron_schedules', 'cron_24' );
function cron_24( $schedules ) {
$n = rand(0,55);
$schedules['rand_24'] = array(
'interval' => 60 * $n * 24,
'display' => 'раз в сутки'
);
return $schedules;
}
// регистрируем событие 24_event
add_action( 'wp', 'to_cron_24' );
function to_cron_24() {
if ( ! wp_next_scheduled( '24_event' ) ) {
wp_schedule_event( time(), 'rand_24', '24_event');
}
}
// добавляем функцию к хуку события
add_action( '24_event', 'updated_meta', 1 );
function updated_meta() {
// какая-то задача, например ключевые слова
$keywords = 'ключевые фразы для серии постов';
update_post_meta( $post_id, 'allkeywords', $keywords );
}
Когда вписываю конкретный
id записи работает, а когда параметром:
$post_id не работает.
function updated_meta() {
// какая-то задача, например ключевые слова
$keywords = 'ключевые фразы для серии постов';
update_post_meta( 34, 'allkeywords', $keywords ); // только так работает
update_post_meta( $post_id, 'allkeywords', $keywords ); // так нет
update_post_meta( $post->ID, 'allkeywords', $keywords ); // так нет
update_post_meta( get_the_ID(), 'allkeywords', $keywords ); // так нет
add_action( '24_event', 'updated_meta', 1 );
$post = get_post(); // пробовал
global $post; // пробовал
global $wpdb; // пробовал
И еще. Для обычного обновления полей через
save_post в функции мы пишем параметром
function updated_meta ( $post_id ) но для события так не работает.
Вероятно ID не определяется с пустыми скобками function updated_meta ( ) то есть функция не понимает для какого конкретно поста (записи) сработать.
Как получить ID поста и обновить произвольное поле 'allkeywords' для всех записей сразу?