问题描述

WP 3.1 让每个人都兴奋,如果有些困惑,关于邮政格式。

启用新的帖子格式

关于启用邮政格式的问题已经详细论述了。就像将这行添加到 functions.php 中一样简单:add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

显示某种格式的帖子

但显示这些职位的问题根本就没有涵盖。让我们使用一个例子记录显示/查询特定格式的帖子的过程:

假设我们想在侧栏中添加一个 Twitter-like 状态更新。很容易启用 status 后期格式,但是如何实际查询这些帖子,使其显示在侧栏中?

我做了相当多的搜索,没有找到这个问题的答案,欢迎所有人的贡献。如果我们提出了一个很好的答案,我认为这将是第一个记录这个问题。

谢谢!

最佳解决方案

您有很多使用”Post Formats” 功能进行显示的选项:

例如在 index.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()获取基于格式的错误循环,这是假设您为主题中使用的每个格式制作了一个格式 loop.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_class();” 功能基于 CSS 的风格

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

这将输出如下:

<div id="post-id" class=”post format-status”>

希望这有助于开始

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。