Из этого туториала вы узнаете, как создать миниатюру сообщений по умолчанию из ядра. Многие учебные пособия демонстрируют, как проверить, существует ли миниатюра в сообщении, а затем отобразить ее, если миниатюра не существует. Этот урок покажет вам, как избежать сохранения поста без миниатюры.
Обычный способ получить миниатюру по умолчанию
Как упоминалось ранее, в некоторых руководствах предлагается сделать в теме оператор 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» />’;
}
|
Это простое утверждение будет работать, но для этого потребуется изменить сторонние плагины, которые не имеют функций миниатюр по умолчанию. Вот почему этот урок сохранит миниатюру по умолчанию в базе данных.
Шаг 1 Получение идентификатора миниатюры
Первое, что вам нужно сделать, это получить идентификатор загруженного эскиза, который вы будете использовать. Это можно сделать, посетив Медиатеку, выбрав свое изображение и собрав удостоверение личности.
На скриншоте каждый получает целое число идентификатора из адресной строки, где » attachment_id=
«.
Шаг 2 Кодирование функции
Чтобы добавить функцию миниатюр по умолчанию, вы можете добавить следующий фрагмент в файл 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
изображением из файла вашей темы. Удачного кодирования!