Вопрос или проблема
У меня есть несколько постов в моем автоблоге, у которых по ошибке крон-задачи было удалено изображение для превью. Как найти все эти посты (посты с неработающей ссылкой на изображение) и удалить их все или установить изображение по умолчанию, если изображение для превью отсутствует, не просматривая один за другим тысячи постов.
Простое решение для проверки вашего веб-сайта и поиска неработающих ссылок и изображений на вашем сайте – это плагин: https://wordpress.org/plugins/link-checker
Вы можете попробовать использовать плагин Broken Link Checker. Он обнаруживает неработающие ссылки и изображения. Он также исправляет их с помощью редиректов. Так что вам не придется просматривать один за другим тысячи постов и удалять неработающие.
Ответ или решение
Для решения проблемы с постами, в которых изображения отсутствуют или являются неработающими ссылками, вы можете использовать несколько стратегий, которые помогут вам быстро найти и удалить такие посты без необходимости искать их один за другим.
1. Использование плагинов для проверки ссылок
Плагины для проверки ссылок могут значительно упростить задачу. Рекомендую рассмотреть следующие решения:
-
Broken Link Checker: Этот плагин сканирует ваши посты на наличие неработающих ссылок и изображений. Он предоставляет список всех найденных проблем и позволяет вам быстро их исправить. Например, вы можете переопределить отсутствующие изображения на стандартные или удалить посты с битыми ссылками.
-
Link Checker: Альтернативный плагин, который также способен находить неработающие изображения на вашем сайте. Он предоставляет удобный интерфейс для удаления или редактирования постов с проблемами.
2. Автоматизированные запросы через WPQuery
Если у вас есть уверенность в своих навыках программирования, вы можете использовать WPQuery для автоматизированного поиска постов с отсутствующими изображениями.
Вот общий пример:
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
);
$query = new WP_Query($args);
foreach ($query->posts as $post) {
$thumbnail_id = get_post_thumbnail_id($post->ID);
if (!$thumbnail_id || !wp_get_attachment_image_src($thumbnail_id, 'full')) {
// Удалить пост или установить стандартное изображение
// wp_delete_post($post->ID);
// update_post_meta($post->ID, '_thumbnail_id', 'ID_стандартного_изображения');
}
}
Этот код ищет все посты, и если найден пост без изображения, вы можете либо удалить его, либо установить стандартное изображение.
3. Ручное редактирование через базу данных
Если вы хотите более глубокий анализ и у вас есть опыт работы с SQL, вы можете написать запрос для поиска постов с отсутствующими изображениями в базе данных WordPress.
Пример SQL-запроса может выглядеть так:
SELECT * FROM wp_posts
WHERE post_type = 'post' AND ID NOT IN (
SELECT DISTINCT post_id FROM wp_postmeta
WHERE meta_key = '_thumbnail_id'
);
Этот запрос выдаст все посты, для которых не заданы изображения. Далее вы можете решить, как поступить с этими постами.
4. Установка стандартного изображения
Для автоматической установки стандартного изображения в случае отсутствия изображения в посте, вам потребуется добавить соответствующий код в файл функций темы (functions.php).
Например:
add_filter('post_thumbnail_html', 'set_default_thumbnail', 20, 5);
function set_default_thumbnail($html, $post_id, $post_thumbnail_id, $size, $attr) {
if (empty($html)) {
// Укажите ID стандартного изображения
$default_thumbnail_url = wp_get_attachment_url('ID_стандартного_изображения');
return '<img src="' . $default_thumbnail_url . '" alt="Стандартное изображение">';
}
return $html;
}
Заключение
Комбинируя использование плагинов для проверки ссылок с программными методами и SQL-запросами, вы сможете быстро избавиться от постов с отсутствующими изображениями или установить для них стандартные изображения. Эти методы помогут сохранить порядок на вашем сайте и улучшить пользовательский опыт, что положительно скажется на SEO.
Следует отметить, что перед выполнением любых действий рекомендуется создать резервную копию вашей базы данных. Это обеспечит безопасность ваших данных и позволит легко восстановить сайт в случае необходимости.