Статьи

Совет: сохранение миниатюры сообщения по умолчанию

Из этого туториала вы узнаете, как создать миниатюру сообщений по умолчанию из ядра. Многие учебные пособия демонстрируют, как проверить, существует ли миниатюра в сообщении, а затем отобразить ее, если миниатюра не существует. Этот урок покажет вам, как избежать сохранения поста без миниатюры.


Как упоминалось ранее, в некоторых руководствах предлагается сделать в теме оператор If ... Else чтобы отобразить миниатюру по умолчанию. Пример таков:

1
2
3
4
5
6
if (has_post_thumbnail()) {
    the_post_thumbnail();
}
else {
    echo ‘<img src=»‘ . get_bloginfo(‘template_directory’) . ‘/images/thumb-default.png’ . ‘» width=»100″ height=»100″ alt=»thumbnail» />’;
}

Это простое утверждение будет работать, но для этого потребуется изменить сторонние плагины, которые не имеют функций миниатюр по умолчанию. Вот почему этот урок сохранит миниатюру по умолчанию в базе данных.


Первое, что вам нужно сделать, это получить идентификатор загруженного эскиза, который вы будете использовать. Это можно сделать, посетив Медиатеку, выбрав свое изображение и собрав удостоверение личности.

На скриншоте каждый получает целое число идентификатора из адресной строки, где » attachment_id= «.


Чтобы добавить функцию миниатюр по умолчанию, вы можете добавить следующий фрагмент в файл functions.php в папке вашей темы.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
add_action( ‘save_post’, ‘wptuts_save_thumbnail’ );
 
function wptuts_save_thumbnail( $post_id ) {
 
    // Get Thumbnail
    $post_thumbnail = get_post_meta( $post_id, $key = ‘_thumbnail_id’, $single = true );
 
    // Verify that post is not a revision
    if ( !wp_is_post_revision( $post_id ) ) {
        // Check if Thumbnail exists
        if ( empty( $post_thumbnail ) ) {
            // Add thumbnail to post
            update_post_meta( $post_id, $meta_key = ‘_thumbnail_id’, $meta_value = ‘233’ );
        }
    }
 
}

Мы используем хук save_post чтобы вызвать нашу функцию и получить недавно добавленную запись. Как только мы get_post_meta на недавно добавленную запись, мы используем get_post_meta чтобы получить значение из базы данных для идентификатора миниатюры, где идентификатор записи является последней вставленной. Далее мы используем функцию wp_is_post_revision чтобы проверить, является ли сохраненный пост ревизией или новым. Если сообщение является ревизией, тогда мы аннулируем оставшуюся часть функции. Используя оператор If , мы проверяем, существуют ли какие-либо метаданные для эскиза. Если ничего не существует, то мы используем функцию add_post_meta чтобы добавить идентификатор миниатюры по умолчанию к последнему добавленному сообщению.

Вуаля! Во время сохранения в черновом режиме эскиз по умолчанию будет сохранен в базе данных и теперь доступен для использования в виджетах или плагинах, которые используют эскизы. Если вы создаете тему, вы можете использовать этот метод и заменить $meta_value изображением из файла вашей темы. Удачного кодирования!