Has_POST_Format()与Get_POST_Format()

时间:2011-04-08 作者:kaiser

我刚进入了post formats 我想知道为什么post格式的“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? 如果你能给我举一些例子,说明一个函数不能完成另一个函数所能完成的事情,我会非常高兴。

3 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

编辑

has_post_format() 需要字符串,$format, 作为第一个参数;这意味着它只能用于测试显式post格式类型:

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" 不是实际的帖子格式,而是没有指定帖子格式的帖子的占位符。WordPress在内部返回false 而不是post-format-standard, 因此,要查询“标准”post格式类型,只需使用if ( false == get_post_format() ).

原件

has_post_format() 返回一个布尔值,该值对条件很有用,例如:

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() 返回当前post格式类型的字符串值,这在多个方面很有用。最强大的功能之一是根据post格式调用不同的模板零件文件,例如:

get_template_part( \'entry\', get_post_format() )
其中包括,例如,“entry aside.php”表示一种aside格式,或“entry.php”表示一种标准格式。

SO网友:Jan Fabry

以下部分不正确,我有created a ticket 请求此增强

has_post_format() 更灵活,因为它建立在has_term(), 建立在is_object_in_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(), 也许是因为它建立在同时具有这两种功能的分类系统之上?

SO网友:Drew Gourley

很简单,has\\u post\\u format()返回一个真/假(布尔)值,该值在IF语句中很有用,而get\\u post\\u format()返回post格式(如果存在),如果不存在,则可能返回NULL或false。使用布尔值是一种很好的干净方法,可以确保条件始终按照预期的方式运行,并且has\\u post\\u 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用户所熟悉的略高于平均水平的专业知识多一点。

结束

相关推荐