Alex
Алекс

PHP-скрипт удаления ссылок из записей WordPress

Было задание убрать из материалов на одном сайте ссылки, подписанные определённым словом. Вот, есть, скажем, 1200 записей на сайте и в каждой из них стоит в конце ссылка на источник, подписанная словом “Источник”. Все эти ссылки нужно удалить.

На скорую руку был написан PHP-скрипт и успешно протестирован. “На скорую руку” – это значит, что он далеко не идеален. За него меня бы “заминусловали” где-нибудь на Хабрахабре, но в умелых руках он сделает своё дело.

Файл clear.php

<?php
header('Content-type: text/html; charset=utf-8');

$link = mysqli_connect('localhost', 'dbuser', 'dbpassword', 'db');
//надеюсь, не нужно пояснять, что в dbuser, dbpassword и db нужно 
//поставить свои значения пользователя базы данных, его пароля и 
//название самой БД соответственно
if (!$link) {
 printf("Невозможно подключиться к базе данных. Код ошибки: %s\n", 
  mysqli_connect_error());
 exit;
}
mysqli_set_charset($link, "utf8"); 

$post = array(); // массив с содержанием записей

if ( $result = mysqli_query( $link, "SELECT * FROM wp_posts WHERE 
 post_status = 'publish' AND post_content LIKE '%>Источник<%';" ) ) {
// вместо Источник можно поставить своё слово. Слово-ссылку, 
// которое надо удалять из каждой записи 
 while ($row = mysqli_fetch_assoc($result)) { 
  $string = $row['post_content'];
  $res = sprintf(preg_replace('/<a href="(.*?)">Источник<\/a>/', 
   "\\2", $string)); // удаляем слово ссылку из временной записи
  $post[] .= $res; // заносим в массив содержание записи уже без ссылки
  $sql = mysqli_query($link,"UPDATE wp_posts SET 
   post_content = '".mysqli_real_escape_string($link,$res)."' 
   WHERE ID = {$row['ID']};") or die(mysqli_error($link));
  // а здесь уже временная запись без слова-ссылки превращется 
  // в настоящую запись
 }
 mysqli_free_result($result);
}

mysqli_close($link); 

var_dump($post); // выводим массив исправленных записей на экран
?>

Как всегда, вопросы и предложения – в комментарии к записи. Буду рад замечаниям и советам.

Якщо вам сподобався чи став у нагоді текст, ви завжди можете віддячити! На каву

Приєднатися до обговорення

2 коментарі

    1. Так работает же ;) каждый код совершенствуется. Для того и написано, что сделано на “скорую руку”))

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*
*
*