Как я могу проверить, связался ли я с сообщением, прежде чем удалить его?

15

Если я хочу «безопасно» удалить сообщение. Я хочу убедиться, что в моем блоге нет ссылки на сообщение, которое нужно удалить. Как мне это сделать?

user3047
источник
Не уверен, как это сделать, но, может быть, вы не можете попробовать это: переместите сообщение в корзину и используйте плагин проверки ссылок. Если плагин для проверки ссылок достаточно умен, он должен сообщить вам любые ссылки, ссылающиеся на пост, который вы больше не видите на сайте.
Брейди,
1
+1 за отличный вопрос. Идея состоит в том, чтобы сканировать содержимое всех сообщений, но это может быть проблемой для большого сайта с большим количеством сообщений. Я бы сделал это, сохранив сериализованный массив ссылок поста в его постмете (для новых и для существующих), а затем запросил эту метаинформацию из таблицы постметы, просканировал и возвратил массив идентификаторов постов, которые ссылаются на удаляемое пост. , Вы можете либо остановить его, либо заставить его совершить любое действие, которое вы хотите.
Ashfame
@Ashfame: интересное предложение. Теперь, если бы вы создали плагин для него ...
Ян Фабри
Еще +1 плюс фавор. @Jan Fabry & @Ashfame - я уверен, что вы хотите работать вместе над этим! :)
Кайзер
@ user3047 Разве вы не хотите пометить это как решенное?
Кайзер

Ответы:

6

Прочитав эту ветку, я увидел, что иногда мне это может понадобиться. Итак, вот результат:

Плагин для проверки внутренних ссылок

Он добавляет мета-поле на экраны редактирования вашего сообщения, в котором отображаются ссылки на все сообщения, которые внутренне ссылаются на текущее отображаемое сообщение. Если вы хотите изменить вывод (например, добавить что-то), пожалуйста, используйте предоставленный фильтр. Пример использования фильтра можно найти в файле readme.

Плагин имеет лицензию GPL2. Возможно, я также добавлю это в официальный репозиторий, чтобы разрешить установку из вашего собственного блога. Редактировать: Готово.

...или в...

... или в нашем собственном

кайзер
источник
И спасибо @Drake за предоставление SQL-запроса (пожалуйста, зайдите и поддержите его ответ).
Кайзер
Немного грубо, но вроде работает. Если у вас есть несколько ссылок в одном посте, он покажет дубликаты. Принято решение.
user3047
Спасибо за внимание. Не знал об этом. Изменится в будущей версии.
Кайзер
6

Вы можете сделать запрос как:

SELECT ID, post_title, post_date, post_content 
FROM wp_posts 
WHERE post_content 
LIKE '%your-post-title%' ORDER BY post_date

чтобы получить все посты, которые связывали этот старый пост по дате.

селезень
источник
1

Не существует отдельной таблицы или структуры данных, в которой хранятся ссылки пост-пост, поэтому лучший способ сделать это - найти в ваших постах URL-адрес поста, который вы хотите удалить. Поиск работает по HTML-коду поста, поэтому он будет содержать полную ссылку, даже если вы не видите ее в визуальном редакторе.

Конечно, вы также должны искать по страницам, так как они могут также содержать ссылки на сообщения.

Другой подход заключается в использовании Google. Если вы ищете link:http://example.com/2011/05/post-to-delete/его, вернутся все страницы, на которые есть ссылка. Затем вы также можете добавить, site:example.comчтобы ограничить результаты только страницами на вашем сайте. Конечно, это будет не так актуально, как поиск в вашей текущей базе данных.

Ян Фабри
источник
Отличная идея. Но мой блог - частный ...
user3047
1

Просто используйте инструменты Google для веб-мастеров - у них есть определенная страница с внутренними ссылками.

ана
источник