@raswe

Масовое редактирование записей (сайт на вордпрес)?

Добрый вечер! Есть сайт на вордпрес, его нужно немножко подправить. Словарь, елементы которого размещены каждый в отдельной записи.... Всего 36 000 записей.... Встречается в многих из них неправильные символы , типа ^, % и еще что-то. Как можно из-под админки вордпрес отредактировать масово эти записи, так как руками пересчелкать их просто нереально...
Спасибо
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега WordPress
Thinking about a11y
Думаю было бы проще в самой БД выполнить поиск и автозамену. Если нужно именно в админке то есть плагины которые позволяют сделать это оттуда. Либо, если ваш хостинг слабоват, можно написать простейшее nodeJS приложение, которое бы поочерёдно через API последовательно обновляло каждый пост.
Ответ написан
Комментировать
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Вы можете воспользоваться нативной функцией 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 и его нужно отключать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы