Как через хук заменить Избранные изображения записей в определённой рубрике?
Просто идеальный код позволяющий очень быстро заменить заглушку изображения в рубрике на другую.
В functions.php добавляем код, последнюю строку раскомментируем, обновляем нашу категорию, и комментируем обратно.
В этом коде меняем 5 полей всего (или 4):
- $old_image_id - тут id нашей прошлой картинки (смотрим в медиатеке url) - я указал 1 раз - у меня заглушка была везде одинаковая
а вот тут меняем при работе с каждой категории по отдельности:
- $new_image_id - ID новой картинки
- $category_id - ID нашей выбранной категории
- function replace_featured_image_cat329 - а тут просто меняем id (это чтобы не было конфликта если несколько опубликуете)
- replace_featured_image_cat329 - а тут просто меняем id
/** * Заменяет избранное изображение в рубрике "" * Только у записей, где сейчас стоит nofona.png (ID=47218) */ function replace_featured_image_cat329() { // НАСТРОЙКИ $old_image_id = 47218; // nofona.png ID — старая картинка $new_image_id = 130682; // ID — новая картинка $category_id = 329; // Рубрика в которой меняем миниатюры // Защита: только для админов if ( ! current_user_can('manage_options') ) { return; } // Проверка существования старой картинки if ( ! wp_get_attachment_image_src( $old_image_id ) ) { error_log("Старое изображение ID $old_image_id не найдено!"); return; } // Проверка существования новой картинки if ( ! wp_get_attachment_image_src( $new_image_id ) ) { error_log("Новое изображение ID $new_image_id не найдено!"); return; } // Поиск записей по двум условиям: рубрика + старая миниатюра $args = array( 'posts_per_page' => -1, 'cat' => $category_id, 'fields' => 'ids', 'post_type' => 'post', 'post_status' => 'publish', 'meta_query' => array( array( 'key' => '_thumbnail_id', 'value' => $old_image_id, ) ), ); $post_ids = get_posts( $args ); if ( empty( $post_ids ) ) { error_log("Записи не найдены. Проверьте: 1) рубрика , 2) у записей стоит картинка 47218"); return; } // Логирование error_log("Найдено записей для замены: " . count( $post_ids )); // Выполнение замены $count = 0; foreach ( $post_ids as $post_id ) { // Дополнительная проверка для безопасности $current_thumb = get_post_meta( $post_id, '_thumbnail_id', true ); if ( $current_thumb == $old_image_id ) { update_post_meta( $post_id, '_thumbnail_id', $new_image_id ); $count++; } } error_log("ГОТОВО! Обновлено записей: $count"); } // РАСКОММЕНТИРУЙ ЭТУ СТРОКУ, ЗАЙДИ НА САЙТ, ПОТОМ ЗАКОММЕНТИРУЙ ОБРАТНО! // add_action('init', 'replace_featured_image_cat329');