在一个页面上显示WordPress CPT项目

时间:2017-11-04 16:13:47

标签: php wordpress custom-post-type

好吧,这可能是一个非常的菜鸟问题,但我想知道如何在我的WordPress子主题中的一个页面上显示所有自定义帖子类型项目?

我的孩子主题有以下文件: functions.php style.css

我们说我的CPT名为歌曲,我想在名为 example.com/music 的页面上显示所有歌曲

任何人都知道如何实现这一目标?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当您使用名称​​歌曲创建CPT时,您的帖子包含post_type 首歌,您可以像查询任何其他post_type一样查询并将其打印成循环:

query_posts(array('post_type' => 'songs', 'posts_per_page' => '5', 'orderby' => 'date', 'order' => 'DESC', 'offset' => 0));
if(have_posts()) {
    while(have_posts()) : the_post();
        get_template_part('content', 'songs');
    endwhile;
}
wp_reset_query();

在上面的示例中,我使用可选内容模板进行post_type的html呈现,以便更多地构建我的代码。

因此我的模板文件夹中会有一个名为content-songs.php的文件,我可以在其中定义CPT的输出:

<article class="songs">
    <header>
        <h1><?php the_title(); ?></h1>
    </header>

    <div>
        <?php the_content(); ?>
    </div>
</article>

要在页面中输出您的CPT,您可以使用页面模板,类似于&#34;自定义页面类型&#34;。页面模板的一个简单示例是以下代码段。要使用页面模板,您需要在模板文件夹中创建一个名为page-songs.php的文件。

<?php
/**
 * Template Name: Songs
 *
 * @package WordPress
 * @subpackage YOUR THEME NAME
 * @since MyTheme 2.0
 */
get_header();

?>
    <div class="song-list">
        <?php
        query_posts(array('post_type' => 'songs', 'posts_per_page' => '5', 'orderby' => 'date', 'order' => 'DESC', 'offset' => 0));
        if(have_posts()) {
            while(have_posts()) : the_post();
                get_template_part('content', 'songs');
            endwhile;
        }
        wp_reset_query();
        ?>
    </div>
<?php
get_footer();
?>

现在,CPT输出代码包含在页面模板中。您只需要在Wordpress中创建一个新页面并选择(在新出现的对话框中)页面应该使用的模板。现在,这里还将提供模板歌曲。创建页面后,您应该会看到CPT的歌曲。