问题描述
我刚刚进入后期格式的概念,并且想知道为什么有三个功能中的两个从后期格式”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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。