Функция для изменения значения произвольного поля для всех записей разом.
Функцию надо поместить в код страницы шаблона сайта на WordPress, а затем загрузить эту страницу. Например, положить этот код в файл single.php, а затем обновить любую страницу сайта со статьёй.
$args = array(
'posts_per_page' => 1000,
'post_type' => 'post'
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
$new_meta = 1;
update_post_meta($post->ID, 'single_meta', $new_meta);
}
}
'posts_per_page' => 1000,
'post_type' => 'post'
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
$new_meta = 1;
update_post_meta($post->ID, 'single_meta', $new_meta);
}
}
Переменная $new_meta — отвечает за значение, на которое будет изменены произвольные поля всех записей.
single_meta — это то произвольное поле, значения в котором требуется поменять.
Что то я не понял куда именно втавить код?
В статье написано, даже файл указан. Если это вам ни о чем не говорит, то лучше ничего не трогать.
Код сработал, но только на первые 1000 постов, пробовал поставить ‘posts_per_page’ => 3000, код работать вообще перестал, хотя на сайте 3229 записей. Что делать?
Может не хватать времени для обработки всех запросов.
Измените этот участок:
'posts_per_page' => 1000,
'post_type' => 'post'
);
на такой:
'posts_per_page' => 1000,
'post_type' => 'post'
'meta_query' => [
[
'key' => 'название произвольного поля',
'value' => 'новое значение поля',
'compare' => '!=',
],
],
];
Мы говорим коду изменить только те записи, которые еще не были изменены.
Запустить код несколько раз.