Дублирование страниц wordpress

дублирование страниц WordPress

дублирование страниц WordPress

Создавая сайт и наполняя его статьями самостоятельно, проблема дублей страниц не столь актуально. Но если вы делаете сайт, информация на который парсится с других, то это может привести к тому, что на сайте появятся дубликаты страниц — страницы с одинаковым содержанием. Поисковые системы этого не любят. Так что же делать?

Ну естественно, дубли нужно удалять. Но когда число страниц сайта измеряется сотнями и даже тысячами, то делать это вручную очень долго и затратно по времени. У меня есть сайт на WordPress, на котором я провожу различные эксперименты. И вот недавно начал набивать его данными с одного сайта, которые закрыты от индексации ПС. Все вроде бы замечательно, но столкнулся с проблемой — некоторые страницы повторяются. Связано это не с плохо написанным парсером (хотя и его можно модифицировать), а с сайтом-донором. Встал вопрос — как удалить дублирование страниц wordpress.

Я написал небольшой php скрипт, который автоматизирует этот процесс. Работает он довольно просто. Получает список записей (только из одной категории — мне нужно было именно так). В моем случае это записи из категории с ID 3. Далее в массив записываются названия и идентификаторы постов. Ну а далее все просто — пробегаемся в цикле по всем заголовкам и ищем повторяющиеся. Если находим — удаляем. Скажу сразу — скрипт написан на коленке, без какой-либо отпимизации — нужно было быстро удалить дубли в WordPress. Исходный код прилагаю:

<?php
header('Content-type: text/html; charset=utf-8');
ini_set('memory_limit', '256M');
require_once("../wp-config.php");
@ini_set('max_execution_time', 0);
$my_posts = get_posts('numberposts=-1&category=3');
foreach ($my_posts as $post) :
setup_postdata($post);
$mas[] = array('name'=>get_the_title(),'id'=>get_the_id());
$name_mas[]=get_the_title();
endforeach;
$counter=0;
for ($i = 0;$i<count ($mas); $i++ ){
	for ($j = $i+1;$j<count ($mas); $j++ ){
		if ($mas[$i]['name'] == $mas[$j]['name']){
		echo $i." - ".$mas[$i]['name']." - ".$mas[$i]['id']." - "." <b>копия</b><br>";
		wp_delete_post($mas[$i]['id']);
		$counter++;
		}	
	}
}
echo "<h2>УДАЛЕНО ".$counter." записей</h2>";
?>

Скрипт кладем в любую папку (например, /delcopy/script.php) и просто вызываем на исполнение.

Меток нет. Похожие записи
Запись опубликована в рубрике Новости. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*