Вы можете воспользоваться нативной функцией
wp_update_post()
, чтобы обновить нужные вам данные:
// получаем все посты
$my_posts = get_posts( array(
'numberposts' => -1,
'post_type' => 'post',
) );
foreach ( $my_posts as $key => $my_post ) {
// как-то обрабатываем контент, например, убираем регуляркой перечисленные символы
$content = preg_replace('/([\^\%]+)/', '', $my_post->post_content);
$post_data = array(
'ID' => $my_post->ID,
'post_content' => $content,
);
// пушим контент обратно
$post_id = wp_update_post( wp_slash( $post_data ) );
// пишем ошибку/ успех
if( is_wp_error($post_id) ) {
var_dump( 'Ошибка обновления поста ' . $my_post->post_title . ': ' . $post_id->get_error_message() );
} else {
var_dump( 'Пост ' . $my_post->post_title . ' обновлен удачно!' );
}
}
Можете запустить функцию в functions.php или повесить на любой удобный вам хук. Учитывайте, что на хуке
save_post
создается бесконечный цикл, т.к.
wp_update_post()
сам по себе вызывает
save_post
и его нужно отключать