@ustrechko

Существует ли плагин для WP перегенерации постоянных ссылок в базе?

Ну, собственно сама проблема описана в заголовке. Ищу такой плагин для wordpress или может можно сделать как нибудь через php. Имеется 150+ тыс строк в базе, пара десятков тысяч строк в столбце post_name (из этой ячейки wp тянет постоянную ссылку на пост) имею дубли, грубо говоря 500 строк имею одно одинаковое значение, другие 100 строк другое одинаковое значение и тд, минимальное совпадение. Существует ли такой запрос sql или плагин чтобы обойти одинаковые строки, добавить к ним name-1, name-2, name-3 .... name-100500?

Заранее благодарю за ответы.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
HectorPrima
@HectorPrima
программист
Внимание! Следующий код лучше сначала проверить на локалке или на копии сайта.

Как то так. В корне wordpress запустить в баше. Типа php wp-reb.php
<?php

if (empty($wp)) {
    require_once('wp-config.php');
}

global $wpdb;

$posts = $wpdb->get_results(
    "SELECT
    	p.ID, p.post_name
   	 FROM
   	 	wp_posts p
     WHERE
        p.post_type = 'post' AND p.post_status = 'publish'");

$double = array();
$rewrite = array();

foreach($posts as $post){
	if (!array_key_exists($post->post_name,$double)){
		$double[$post->post_name] = 0;
	}else{
		$double[$post->post_name] += 1;
		$rewrite[$post->ID] = $post->post_name . "-" . $double[$post->post_name];
	}
}

foreach($rewrite as $key => $value){
	$wpdb->update( 'wp_posts',
		array( 'post_name' => $value ),
		array( 'ID' => $key )
	);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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