代码之家  ›  专栏  ›  技术社区  ›  GKMelbo

在一页上显示WordPress CPT项目

  •  0
  • GKMelbo  · 技术社区  · 7 年前

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

    “我的孩子”主题包含以下文件: 功能。php 风格css

    歌曲 我想在一个叫做 实例com/音乐

    有人知道如何做到这一点吗?任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mo0812    7 年前

    当您使用名称创建CPT时 歌曲 ,你的帖子有 post_type 歌曲 post_类型 并循环打印:

    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_类型 来构造我的代码。

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

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

    要在页面中输出您的CPT,您可以使用 页面模板 这类似于“自定义页面类型”。下面是页面模板的一个简单示例。要使用页面模板,您需要在模板文件夹中创建一个名为 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中创建一个新页面,然后(在一个新出现的对话框中)选择该页面应该使用的模板。下面是模板 歌曲