22.05.2023

Массовая замена миниатюр записей и рандомизация миниатюр в категории через Quick-featured-images-pro

Массовая замена миниатюр записей и
рандомизация миниатюр в категории через плагин Quick-featured-images-pro

1. Устанавливаем quick-featured-images-pro
указываем стандартную миниатюру и добавляем правило
где указываем список изображений миниатюр для рандома (названия картинок лучше как то указать, для поиска, например patriotizm1, 2/ /3 и т.д)
и выбираем категорию

quick-featured-images-pro

Теперь все загружаемые записи, в эту категорию, и без миниатюры (или вообще без картинки в посте )будут рандомно получать миниатюру по этому правилу.

Следующая задача: Это применить это правило на уже размещенные записи. У меня много записей, где стоит стандартная заглушка:

Для этого нам через скрипт, нужно запустить удаление этой заглушки и запустить наш плагин для рандомной миниатюры.

Тут всего 2 шага:

1. вставим в functions.php этот код, обновим любую страницу админки 1 раз, удалим код.
Он забирает ID записей категории (надо указать только нам и можно несколько сразу)
проверяет миниатюру

если имя файла nofona.png (можно несколько сразу)  - удаляет связь.

Остальные миниатюры не трогает.

add_action('init', function() {
    if (!current_user_can('manage_options')) return;
     
    $posts = get_posts([
        'numberposts' => -1,
        'fields'      => 'ids',
        'tax_query'   => [
            [
                'taxonomy' => 'category',
                'field'    => 'slug',
                'terms'    => ['rynok-i-czeny', 'gospolitika'], // ← ваши слаги
                'operator' => 'IN', // посты из ЛЮБОЙ из этих категорий
            ],
        ],
    ]);
 
    $files_to_remove = [
        'nofona.png', 'nofona-1.png', 'nofona-2.png', 'nofona-3.png',
        'nofona-4.png', 'nofona-5.png', 'nofona-6.png', 'nofona-7.png',
        'nofona-8.png'
    ];
     
    foreach ($posts as $post_id) {
        $thumb_id = get_post_thumbnail_id($post_id);
        if (!$thumb_id) continue;
         
        $file = get_post_meta($thumb_id, '_wp_attached_file', true);
         
        if ($file && in_array(basename($file), $files_to_remove, true)) {
            delete_post_meta($post_id, '_thumbnail_id');
        }
    }
}, 999);

2. Этот код удалит все миниатюры  nofona.png

после чего мы в админке заходим в категорию эту. Выбираем все записи - "Действия" - "Изменить" - "Применить" - "Обновить".

Массовая замена миниатюр записей и рандомизация миниатюр
Массовая замена миниатюр записей и рандомизация миниатюр

После чего, сработает плагин quick-featured-images-pro и рандомно на записи установит миниатюры.

Все работает!

P.S. Если рубрика имеет большое кол-во записей, можно обновить через простой плагин миграции bulk-move-posts
Просто выбираем из нашей категории в нашу же.
Вот пример:

bulk-move-posts
bulk-move-posts

Да и вообще этот вариант намного удобнее. Я так все категории решил "перезаписать."

 

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