Display/query post formats

时间:2011-03-11 作者:saltcod

WP 3.1让每个人都对post格式感到兴奋,尽管有些困惑。

启用新的帖子格式

详细讨论了启用帖子格式的问题。只需将这一行添加到函数中即可。php:add_theme_support( \'post-formats\', array( \'aside\', \'gallery\' ) );

显示特定格式的帖子,但几乎没有涉及显示这些帖子的问题。使用以下示例记录显示/查询特定格式帖子的过程:

假设我们想在侧边栏中添加一个类似于推特的状态更新。很容易启用status 帖子格式,但我如何实际查询这些帖子以使它们显示在侧边栏中?

我已经做了相当多的搜索,还没有找到这个问题的答案,欢迎大家都来帮忙。如果我们能找到一个好的答案,我想这将是第一个记录这个问题的文件。

谢谢!

4 个回复
最合适的回答,由SO网友:Bainternet 整理而成

使用“Post Formats”功能,您有很多显示选项:

例如,在索引中。php循环您可以使用has_post_format() 功能:

        if ( has_post_format( \'aside\' )) {
            echo the_content();
        }

        elseif ( has_post_format( \'chat\' )) {
            echo \'<h3>\';
            echo the_title();
            echo \'</h3>\';
            echo the_content();
        }

        elseif ( has_post_format( \'gallery\' )) {
            echo \'<h3>\';
            echo the_title();
            echo \'</h3>\';
            echo the_content();
        }

        elseif ( has_post_format( \'image\' )) {
            echo \'<h3>\';
            echo the_title();
            echo \'</h3>\';
            echo the_post_thumbnail(\'medium\');
            echo the_content();
        }

        elseif ( has_post_format( \'link\' )) {
            echo \'<h3>\';
            echo the_title();
            echo \'</h3>\';
            echo the_content();
        }

        elseif ( has_post_format( \'quote\' )) {
            echo the_content();
        }

        elseif ( has_post_format( \'status\' )) {
            echo the_content();
        }

        elseif ( has_post_format( \'video\' )) {
            echo \'<h3>\';
            echo the_title();
            echo \'</h3>\';
            echo the_content();
        }

        elseif ( has_post_format( \'audio\' )) {
            echo \'<h3>\';
            echo the_title();
            echo \'</h3>\';
            echo the_content();
        }

        else {
            echo \'<h3>\';
            echo the_title();
            echo \'</h3>\';
            echo the_content();
        }
使用get_template_part()get_post_format() 要基于格式获得不同的循环,这是假设您已经创建了一个格式循环。php(比如format status.php)文件,用于主题中使用的每种格式,因此您可以将其称为:

get_template_part( \'format\', get_post_format() );
您还可以根据帖子的格式查询帖子:

$args = array(
                \'tax_query\' => array(
                    array(
                        \'taxonomy\' => \'post-format\',
                        \'field\' => \'slug\',
                        \'terms\' => array( \'post-format-quote\' )
                    )
                )
            )
            $query = new WP_Query( $args );
最后(目前)可以使用“post\\u class();”基于CSS的功能到样式

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
这将输出如下内容:

<div id="post-id" class=”post format-status”>
希望这有助于入门

SO网友:Manzabar

您可以使用has_post_format 或者你可以使用get_post_format. 丽莎·萨宾·威尔逊(LisaSabinWilson)有一篇很好的文章使用了它们,名为WordPress 3.1 Post Formats Reference.

has_post_format 示例:<?php if ( has_post_format( \'video\' )) { echo \'this is the video format\'; } ?>

get_post_format 示例:<?php $format = get_post_format( $post_id ); ?>

SO网友:curtismchale

虽然上述所有方法都会奏效,但有一种更干净的方法可以做到这一点as shown by Dougal Campbell

while ( the_loop() ):
    get_template_part( \'format\', get_post_format() );
endwhile;
使用这种方法会扼杀条件语句,意味着如果您添加对另一种post格式的支持,就不必再添加更多。您所要做的就是添加模板文件。

SO网友:mrwweb

只需添加一个简短的更新,如果您只想查询“标准”帖子格式(即默认格式),则必须查询所有非其他帖子格式的帖子。这是因为WordPress为标准帖子存储的是“false”,而不是“post format standard”。

有点恼人,但这是我唯一能做到的。

以下是我用来只返回标准帖子的“tax\\u query”:

\'tax_query\' => array(
    array(
        \'taxonomy\' => \'post_format\',
        \'field\' => \'slug\',
        \'terms\' => array(\'post-format-aside\', \'post-format-gallery\', \'post-format-link\', \'post-format-image\', \'post-format-quote\', \'post-format-status\', \'post-format-audio\', \'post-format-chat\', \'post-format-video\'),
        \'operator\' => \'NOT IN\'
    )
)
另外,请注意,分类名称是“post\\u format”,而不是上面写的“post format”。我试图更正上述示例,但无法进行单字符编辑。

结束

相关推荐