如何在WordPress中显示用户定义/自定义的帖子?

时间:2017-01-03 作者:Pragmaticoder

这只是wordpress开发的另一个基本问题。我有一个使用函数创建的自定义帖子。php主题文件夹,我目前正在开发。我只是想显示它的所有帖子。

function people() {
    register_post_type( \'people\',
        array(
            \'labels\' => array(
                \'name\' => __( \'People\' ),
                \'singular_name\' => __( \'People\' ),
            ),
            \'public\' => true,
            \'has_archive\' => true,
            \'supports\' => array(
                \'title\',
                \'editor\',
                \'thumbnail\',
                \'custom-fields\'
            )
        ));
}
add_action( \'init\', \'people\' );
这是我必须把它放在wp管理员上的功能。我试着用这个来展示它content-people.php 位于

theme/my-theme/content-templates/content-people.php

这是我在我的a区index.php:

<?php
if( have_posts( ) ): while( have_posts( ) ): the_post(\'people\');

    get_template_part( \'content-templates/content\', \'people\');

endwhile;
endif;
?> 
这就是我穿的**content-people.php

<div class="col-lg-3 col-md-6 text-center">
    <div class="service-box">
        <i class="fa fa-4x fa-diamond text-primary sr-icons"></i>
        <h3><?php the_title(); ?></h3>

    </div>
</div>
但是,它只显示WordPress的标准/默认帖子,而不是我定义的帖子。我试图在WordPress codex guide上找到它,但仍然找不到确切的解决方案。

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

感谢您的回复。我认为我们有同样的方法。这就是我所做的,它是有效的。

 <?php 
            $args =  array( 
                \'post_type\' => \'people\',
                \'orderby\' => \'menu_order\',
                \'order\' => \'ASC\'
            );
             $custom_query = new WP_Query( $args );
                while ($custom_query->have_posts()) : $custom_query->the_post(); ?>
                    <div class="col-lg-3 col-md-6 text-center">
                            <div class="service-box">
                                <i class="fa fa-4x fa-diamond text-primary sr-icons"></i>
                                    <h3><?php the_title(); ?></h3>
                                        <p class="text-muted">
                                           <?php the_excerpt(); ?>
                                        </p>
                            </div>
                    </div>

                <?php endwhile; ?>

SO网友:AddWeb Solution Pvt Ltd

尝试以下代码

index.php

<?php 
$args = array(
       \'post\' => \'people\',
       \'post_status\' => \'publish\'
       )

 query_posts( $args ); ?>

<?php if ( have_posts() ) : ?>


 <!-- the loop -->
 <?php while ( have_posts() ) : the_post(); ?>

   <?php get_template_part( \'content-templates/content\', \'people\' ); ?>

 <?php endwhile; ?>

<?php else : ?>
 <?php get_template_part( \'content-templates/content\', \'none\' ); ?>
<?php endif; ?>

content-people.php

<div class="col-lg-3 col-md-6 text-center">
<div class="service-box">
   <i class="fa fa-4x fa-diamond text-primary sr-icons"></i>
       <h3><?php the_title(); ?></h3>

</div>
希望这对你有帮助。

SO网友:Tunji

你应该通过考试Template Hierarchy, 它解释了how WordPress determines which template file(s) to use on individual pages.

如果要以自定义帖子类型显示所有帖子的存档,则需要一个名为archive-{post_type}.php.

在您的场景中,您将创建archive-people.php 将位于theme/my-theme/archive-people.php

<?php
if( have_posts( ) ): while( have_posts( ) ): the_post(\'people\');

    get_template_part( \'content-templates/content\', \'people\');

endwhile;
endif;
?> 
当您访问您的站点时,wordpress将以这种方式加载此模板文件example.com/people 而且您不必编写自定义查询来处理请求。

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp