Wordpress - 在 index.php 上自定义 post 类型 posts

Wordpress - Get custom post type posts on index.php

我为我的主题创建了自定义 post 类型,我希望内容在索引页面上像正常 post 一样显示。

我在 index.php 上的代码如下所示

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">

        <div class="container">

            <?php

                if( have_posts() ):

                    while( have_posts() ): the_post();

                        get_template_part( 'template-parts/content', get_post_format() );



                    endwhile;

                endif;

             ?>

        </div><!-- .container -->

    </main>
</div><!-- #primary -->

我对每个 post 格式都有不同的样式,它保存在 content-"post-format-name".php 中。但是,如果我在我的自定义 post 类型上保存一个 post,post 格式为 "Standard",它仍然不会显示。

有什么办法可以解决这个问题吗?谢谢!

自定义post类型显示

默认情况下,使用主查询和注册自定义 post 类型仅从数据库中检索 posts,对此不做任何更改。

根据 documentation 你必须像这样挂入 pre_get_posts 动作

// Show posts of 'post', 'page' and 'movie' post types on home page
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
    if ( is_home() && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'page', 'movie' ) );
    return $query;
}

标准post格式

标准 post 格式的问题在于 get_post_format 函数 returns FALSE 默认格式 (documentation)。您必须使用一些 if 语句来清理这种情况。