kaiser
  • 0
Гуру

Has_post_format() и Get_post_format()

  • 0

Я только что ознакомился с концепцией форматов сообщений и задавался вопросом, почему две из трех функций формата сообщений «API» предлагают абсолютно одинаковые функции. Рассмотрим следующие две концепции (A против B):

if ( have_posts() )
{
    while ( have_posts() )
    {
        the_post();

        // A) has_post_format
        if ( has_post_format('format') )
        {
            the_excerpt(); // some special formating
        }

        // VERSUS:

        // B) 
        if ( get_post_format( $GLOBALS['post']->ID ) == 'format' )
        {
            the_excerpt(); // some special formating
        }

    } // endwhile;
} // endif;

Может кто-нибудь объяснить мне, почему есть эти две функции, а не только ex. get_post_format ? Если бы вы могли предложить мне несколько примеров ситуаций, когда одна функция не способна на что-то, что может сделать другая функция, я был бы особенно счастлив и +1.

Share
  1. Редактировать

    has_post_format() требует строку, $format в качестве первого параметра; что означает, что его можно использовать только для проверки явных типов постформата:

    if ( has_post_format( $format ) {
        // Current post has the $format post format;
        // do something
    }
    

    Чтобы определить, имеет ли сообщение какой-либо формат сообщения, используйте get_post_format(), которое вернет false значение, если текущему сообщению не назначен формат сообщения:

    if ( false != get_post_format() ) {
        // Current post has a post format;
        // do something
    }
    

    Обратите внимание, что «стандартный» не является фактическим форматом поста, а скорее термином- заполнителем для постов, которым не назначен формат поста. Внутри WordPress возвращает false, а не post-format-standard, поэтому для запроса «стандартного» типа пост-формата вы должны просто использовать if ( false == get_post_format() ) .

    Оригинал

    has_post_format() возвращает значение BOOLEAN, которое полезно для условных выражений, например:

    if ( ! has_post_format() ) {
         // I'm a standard-format post; do something
    }
    

    или

    if ( has_post_format( array( 'gallery', 'image' ) ) {
         // I'm a gallery or image format post; do something
    }
    

    get_post_format() возвращает строковое значение текущего типа формата записи, что полезно несколькими способами. Одним из самых мощных является вызов различных файлов частей шаблона в зависимости от формата публикации, например:

    get_template_part( 'entry', get_post_format() )
    

    Который будет включать, например, «entry-aside.php» для дополнительного формата или «entry.php» для стандартного формата.

    • 0
  2. Следующая часть неверна, я создал тикет, чтобы запросить это улучшение.

    has_post_format() является более гибким, потому что он основывается на has_term() , который строится на is_object_in_term() . Это означает, что вы можете передать массив форматов сообщений, и он вернется true, если сообщения имеют один из этих форматов.

    if ( has_post_format( array( 'aside', 'video' ) ) {
        // It's an aside or a video
    }
    

    В первоначальном билете спецификации уже упоминались и, get_post_format() и has_post_format(), может быть, потому, что он основан на системе таксономии, которая также имеет обе функции?

    • 0
  3. Проще говоря, has_post_format() возвращает значение true/false (логическое), которое полезно в операторах IF, а get_post_format() возвращает формат сообщения, если он существует, и, возможно, NULL или false, если его нет. Использование логических значений — это хороший чистый способ убедиться, что ваши условия всегда ведут себя так, как вы ожидали, а функция has_post_format() позволяет использовать простые короткие условия:

    if ( has_post_format() ) {
      //yes we do
    } else {
      //no we do not
    }
    
    if ( !has_post_format() ) {
      //no we do not
    } else {
      //yes we do
    }
    

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

    • 0

Оставить ответ

You must login to add an answer.