01.04.2026

Как через хук заменить Избранные изображения записей в определённой рубрике?

Как через хук заменить Избранные изображения записей в определённой рубрике?

Просто идеальный код позволяющий очень быстро заменить заглушку изображения в рубрике на другую.

В 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');

guest
Закрыть меню