問題描述

我剛剛進入後期格式的概念,並且想知道為什麼有三個功能中的兩個從後期格式”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;

有人可以解釋一下,為什麼有這兩個功能,而不是前。 get_post_format?如果你能給我一些例子,其中一個不能夠做另一個功能的事情,我會特別高興,並+1 。

最佳解決方案

Edit

has_post_format()需要一個字串 $format 作為第一個引數; 這意味著它只能用於測試顯式的 post-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
}

請注意,”standard” 不是實際的 post-format,而是一個沒有分配帖子格式的帖子的佔位符。在內部,WordPress 返回 false 而不是 post-format-standard,因此,要查詢”standard” post-format 型別,您只需使用 if ( false == get_post_format() )

Original

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” 為標準格式。

次佳解決方案

以下部分是不正確的,我有 created a ticket 要求這個增強。

has_post_format()更靈活,因為它建立在基於 is_object_in_term()has_term()上。這意味著您可以傳遞一系列的 Post 格式,如果帖子具有這些格式之一,它將返回 true

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

原來的規格票 already mentioned 都是 get_post_format()has_post_format(),也許是因為它建立在既具有兩個功能的分類系統上?

第三種解決方案

簡單的說, has_post_format() 返回一個在 IF 語句中有用的 true /false(Boolean) 值,而 get_post_format() 返回 post 格式 (如果存在),如果沒有,則返回 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 可以完成任務,但它需要比 above-average WordPress 使用者熟悉的更專業的知識。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。