@ustrechko

Как массово перегенерировать post_name в wp_posts?

Имеются тысячи записей на сайте wordpress. id у всех записей разный, но так получилось, что значение post_name у многи постов оказался одинаковым, а из этого post_name получается url записи. К примеру у 5 записей post_name = trololo, то если ввести site.ru/trololo.html на этой странице отобразятся все 5 записей. Помогите с плагином который перегенерирует этот столбец на trololo, trololo-2, trololo-3 и тд или какой запрос надо выполнить к базе. Заранее спасибо!
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 1
@id_baton4eg
Я бы реализовал это примерно так:
$posts = get_posts( array(
	'numberposts'      => - 1,
	'post_type'        => 'post',
	'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
) );

foreach ( $posts as $post ) {
	setup_postdata( $post );
	if ( strpos( $post->name, 'trololo' ) ) {
		$i ++;
		$new_name = $post->name . '-' . $i;
// Создаем массив данных
		$my_post               = array();
		$my_post['ID']         = $post->ID;
		$my_post['post_name'] = $new_name;
	}
// Обновляем данные в БД
	wp_update_post( wp_slash( $my_post ) );
}

wp_reset_postdata(); // сброс
Ответ написан
Ваш ответ на вопрос

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

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