has_post_thumbnail

Позволяет определить, имеет ли запись миниатюру
Хук WordPress
INT 5.1.0
WordPress Icon

Описание хука

Хук «has_post_thumbnail» позволяет определить, имеет ли запись (пост) миниатюру (постер). Этот хук используется для проверки наличия миниатюры у записи и позволяет разработчику изменить результат проверки.

Использование

apply_filters( 'has_post_thumbnail', bool $has_thumbnail, int|WP_Post|null $post, int|false $thumbnail_id )

Где:

  • $has_thumbnail (bool) — true, если у записи есть миниатюра, в противном случае false.
  • $post (int|WP_Post|null) — ID записи или объект WP_Post. По умолчанию используется глобальная переменная $post.
  • $thumbnail_id (int|false) — ID миниатюры или false, если запись не имеет миниатюры.
<?php
/**
 * Проверяет наличие миниатюры у записи.
 *
 * @param bool        $has_thumbnail true, если у записи есть миниатюра, в противном случае false.
 * @param int|WP_Post|null $post         ID записи или объект WP_Post. По умолчанию используется глобальная переменная $post.
 * @param int|false   $thumbnail_id ID миниатюры или false, если запись не имеет миниатюры.
 * @return bool
 */
function custom_has_post_thumbnail( $has_thumbnail, $post, $thumbnail_id ) {
    // Проверяем, является ли запись типом "post"
    if ( 'post' === $post->post_type ) {
        // Если у записи нет миниатюры, возвращаем false
        if ( ! $has_thumbnail ) {
            return false;
        }
    }
    // Возвращаем результат проверки наличия миниатюры
    return $has_thumbnail;
}
add_filter( 'has_post_thumbnail', 'custom_has_post_thumbnail', 10, 3 );

В приведенном выше примере кода мы создаем функцию «custom_has_post_thumbnail», которая принимает три параметра: $has_thumbnail, $post и $thumbnail_id. Функция проверяет тип записи и возвращает false, если у записи нет миниатюры. В противном случае, функция возвращает результат проверки наличия миниатюры.

Примеры использования

Проверка наличия миниатюры у поста


/**
 * Проверяет, есть ли у поста миниатюра.
 *
 * @param bool            $has_thumbnail true, если у поста есть миниатюра, иначе false.
 * @param int|WP_Post|null $post          ID поста или объект WP_Post. По умолчанию - глобальная переменная $post.
 * @param int|false        $thumbnail_id  ID миниатюры поста или false, если пост не существует.
 * @return bool           true, если у поста есть миниатюра, иначе false.
 */
function custom_has_post_thumbnail( $has_thumbnail, $post, $thumbnail_id ) {
    // Ваш код проверки наличия миниатюры у поста
    if ( has_post_thumbnail( $post ) ) {
        return true;
    } else {
        return false;
    }
}
add_filter( 'has_post_thumbnail', 'custom_has_post_thumbnail', 10, 3 );

Изменение значения has_post_thumbnail


/**
 * Изменяет значение has_post_thumbnail.
 *
 * @param bool            $has_thumbnail true, если у поста есть миниатюра, иначе false.
 * @param int|WP_Post|null $post          ID поста или объект WP_Post. По умолчанию - глобальная переменная $post.
 * @param int|false        $thumbnail_id  ID миниатюры поста или false, если пост не существует.
 * @return bool           true, если у поста есть миниатюра, иначе false.
 */
function custom_change_has_post_thumbnail( $has_thumbnail, $post, $thumbnail_id ) {
    // Ваш код изменения значения has_post_thumbnail
    $has_thumbnail = false;
    return $has_thumbnail;
}
add_filter( 'has_post_thumbnail', 'custom_change_has_post_thumbnail', 10, 3 );

Установка миниатюры для поста


/**
 * Устанавливает миниатюру для поста.
 *
 * @param int              $post_id       ID поста.
 * @param int|WP_Post|null $thumbnail_id  ID миниатюры поста или null, чтобы удалить существующую миниатюру.
 * @return int|false       ID миниатюры поста или false, если возникла ошибка.
 */
function custom_set_post_thumbnail( $post_id, $thumbnail_id ) {
    // Ваш код установки миниатюры для поста
    $result = set_post_thumbnail( $post_id, $thumbnail_id );
    return $result;
}

Удаление миниатюры у поста


/**
 * Удаляет миниатюру у поста.
 *
 * @param int $post_id ID поста.
 * @return bool        true, если миниатюра успешно удалена, иначе false.
 */
function custom_remove_post_thumbnail( $post_id ) {
    // Ваш код удаления миниатюры у поста
    $result = delete_post_thumbnail( $post_id );
    return $result;
}

Получение ID миниатюры поста


/**
 * Получает ID миниатюры поста.
 *
 * @param int $post_id ID поста.
 * @return int|false  ID миниатюры поста или false, если миниатюра не установлена.
 */
function custom_get_post_thumbnail_id( $post_id ) {
    // Ваш код получения ID миниатюры поста
    $thumbnail_id = get_post_thumbnail_id( $post_id );
    return $thumbnail_id;
}

Вопросы и ответы

Как проверить, есть ли у поста миниатюра?

Чтобы проверить, есть ли у поста миниатюра, можно использовать хук has_post_thumbnail. Этот хук фильтрует, имеет ли пост миниатюру.

/**
 * Filters whether a post has a post thumbnail.
 *
 * @param bool              $has_thumbnail  True if the post has a post thumbnail, otherwise false.
 * @param int|WP_Post|null  $post           Post ID or WP_Post object. Default is global $post.
 * @param int|false         $thumbnail_id   Post thumbnail ID or false if the post does not exist.
 */
apply_filters( 'has_post_thumbnail', $has_thumbnail, $post, $thumbnail_id );

Параметры, которые принимает хук has_post_thumbnail:

  • $has_thumbnail: логическое значение, true если у поста есть миниатюра, иначе false.
  • $post: идентификатор поста или объект WP_Post. По умолчанию используется глобальная переменная $post.
  • $thumbnail_id: идентификатор миниатюры поста или false, если пост не существует.

Как добавить миниатюру к посту?

Для добавления миниатюры к посту в WordPress можно использовать функцию set_post_thumbnail(). Эта функция устанавливает указанную миниатюру для указанного поста.

/**
 * Set the post thumbnail.
 *
 * @param int|WP_Post|null $post        Post ID or WP_Post object. Default is global $post.
 * @param int|false        $thumbnail_id Thumbnail ID or false to remove the thumbnail.
 * @return bool                         True on success, false on failure.
 */
set_post_thumbnail( $post, $thumbnail_id );

Параметры, которые принимает функция set_post_thumbnail:

  • $post: идентификатор поста или объект WP_Post. По умолчанию используется глобальная переменная $post.
  • $thumbnail_id: идентификатор миниатюры или false, чтобы удалить миниатюру.

Как удалить миниатюру у поста?

Для удаления миниатюры у поста в WordPress можно использовать функцию delete_post_thumbnail(). Эта функция удаляет миниатюру для указанного поста.

/**
 * Remove the post thumbnail.
 *
 * @param int|WP_Post|null $post  Post ID or WP_Post object. Default is global $post.
 * @return bool                   True on success, false on failure.
 */
delete_post_thumbnail( $post );

Параметры, которые принимает функция delete_post_thumbnail:

  • $post: идентификатор поста или объект WP_Post. По умолчанию используется глобальная переменная $post.

Как изменить миниатюру у поста?

Для изменения миниатюры у поста в WordPress можно использовать хук has_post_thumbnail. Этот хук позволяет фильтровать наличие миниатюры у поста.

Пример кода:


add_filter( 'has_post_thumbnail', 'custom_has_post_thumbnail', 10, 3 );
function custom_has_post_thumbnail( $has_thumbnail, $post, $thumbnail_id ) {
    // Ваш код для изменения миниатюры
    return $has_thumbnail;
}

Как получить ID миниатюры у поста?

Для получения ID миниатюры у поста в WordPress можно использовать хук has_post_thumbnail. Этот хук передает ID миниатюры в качестве параметра.

Пример кода:


add_filter( 'has_post_thumbnail', 'custom_has_post_thumbnail', 10, 3 );
function custom_has_post_thumbnail( $has_thumbnail, $post, $thumbnail_id ) {
    // Ваш код для получения ID миниатюры
    if ( $has_thumbnail ) {
        $thumbnail_id = get_post_thumbnail_id( $post );
    }
    return $thumbnail_id;
}

Как получить URL миниатюры у поста?

Для получения URL миниатюры у поста в WordPress можно использовать хук has_post_thumbnail. Этот хук передает ID миниатюры в качестве параметра.

Пример кода:


add_filter( 'has_post_thumbnail', 'custom_has_post_thumbnail', 10, 3 );
function custom_has_post_thumbnail( $has_thumbnail, $post, $thumbnail_id ) {
    // Ваш код для получения URL миниатюры
    if ( $has_thumbnail ) {
        $thumbnail_id = get_post_thumbnail_id( $post );
        $thumbnail_url = wp_get_attachment_url( $thumbnail_id );
    }
    return $thumbnail_url;
}

Как проверить, является ли миниатюра установленной по умолчанию?

Для проверки, является ли миниатюра установленной по умолчанию, можно использовать хук has_post_thumbnail. Этот хук фильтрует, имеет ли пост миниатюру.

Пример кода:


function check_default_thumbnail( $has_thumbnail, $post, $thumbnail_id ) {
    if ( ! $has_thumbnail ) {
        // Миниатюра установлена по умолчанию
        // Ваш код
    }
    return $has_thumbnail;
}
add_filter( 'has_post_thumbnail', 'check_default_thumbnail', 10, 3 );

Как изменить размер миниатюры у поста?

Для изменения размера миниатюры у поста можно использовать функцию set_post_thumbnail_size. Эта функция устанавливает новый размер миниатюры для поста.

Пример кода:


function custom_thumbnail_size() {
    set_post_thumbnail_size( 300, 200 ); // Ширина: 300px, Высота: 200px
}
add_action( 'after_setup_theme', 'custom_thumbnail_size' );

Как отобразить миниатюру у поста в шаблоне?

Для отображения миниатюры у поста в шаблоне можно использовать функцию the_post_thumbnail. Эта функция выводит HTML-код миниатюры.

Пример кода:


if ( has_post_thumbnail() ) {
    the_post_thumbnail();
} else {
    // Миниатюра отсутствует
    // Ваш код
}

Хук has_post_thumbnail позволяет проверить, имеет ли пост миниатюру. Для проверки, является ли миниатюра установленной по умолчанию, можно использовать этот хук и добавить соответствующий код в функцию-фильтр.
Для изменения размера миниатюры у поста можно использовать функцию set_post_thumbnail_size. Эта функция устанавливает новый размер миниатюры для поста.
Для отображения миниатюры у поста в шаблоне можно использовать функцию the_post_thumbnail. Эта функция выводит HTML-код миниатюры. Если миниатюра отсутствует, можно добавить соответствующий код для обработки этой ситуации.

Связанные элементы

  • Функция get_post_thumbnail_id(): возвращает идентификатор миниатюры записи.
  • Функция set_post_thumbnail(): устанавливает миниатюру для указанной записи.
  • Функция has_post_thumbnail(): проверяет, есть ли у записи миниатюра.
  • Функция the_post_thumbnail(): выводит HTML-код миниатюры записи.
  • Функция get_the_post_thumbnail(): возвращает HTML-код миниатюры записи.
  • Функция the_post_thumbnail_url(): возвращает URL-адрес миниатюры записи.
  • Хук post_thumbnail_html: фильтрует HTML-код миниатюры записи перед выводом.
  • Хук post_thumbnail_size: фильтрует размер миниатюры записи.
Обсуждение