Creating a Page of Posts

时间:2016-09-09 作者:Django Reinhardt

我已经离开Wordpress几个月了,现在我很难记住如何创建一个帖子页面。太气人了!

The Current Site

我有home.php 设置为将自定义帖子类型的最新帖子显示为主页。它工作得很好。一个简单的pre_get_posts 中的函数functions.php 设置要显示的CPT:

$query->set(\'post_type\', \'campaign\');
$query->set(\'posts_per_page\', 11);
。。。什么时候is_home() && $query->is_main_query(). This is correct, and does not need to be changed. 它工作得很好,但现在客户想要一个普通的新闻博客elsewhere 在现场。

The New Version

所以我需要添加一个新闻博客,它不在主页上,保持主页不变。对我来说,使用默认的Post Post类型是有意义的,并且为其创建一个页面也是有意义的。但我似乎无法让一页帖子发挥作用。

起初,我创建了一个page-blog.php “新闻”页面的模板,但它没有使用while ( have_posts() ) : the_post();. 相反,它只列出了它自己。。。?

然后我在我的pre_get_posts 功能:

if(is_page_template(\'page-news.php\')) {
    $query->set(\'post_type\', \'post\');
}
但现在页面返回404。

我做错了什么?

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

在您的page-blog.php 显示帖子列表

$paged = get_query_var(\'paged\') ? get_query_var(\'paged\') : 1;
    $args = array(
        \'post_type\' => \'post\',    //Change this with your post type
        \'posts_per_page\' => 10,  //No. of Pages to show         
        \'offset\' => 0,   //excluding the latest post if any
        \'paged\' => $paged  //For Pagination
    );

$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post();?>
<h3><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title();?></a></h3>
<?php    the_content(__(\'Continue Reading\'));             
endwhile;

wp_reset_postdata();

SO网友:Harshita

Changing the post type on the home page

默认情况下,WordPress在主页上显示帖子类型要添加页面,请打开主题的functions.php 文件并将此PHP代码粘贴到其中:

add_filter( \'pre_get_posts\', \'my_get_posts\' );

function my_get_posts( $query ) {

    if ( is_home() && $query->is_main_query() )
        $query->set( \'post_type\', array( \'post\', \'page\', \'album\', \'movie\' ) );

    return $query;
}
在feed中显示帖子类型意识到许多人可能也想将这些帖子类型添加到feed中以匹配博客,因此需要对代码进行一些小的更改。您只需更改此行:

if ( is_home() && $query->is_main_query() )
我们将使用is_feed() 条件标记:

if ( ( is_home() && $query->is_main_query() ) || is_feed() )
现在,您可以在定期的博客帖子轮换和提要中自定义帖子类型。

SO网友:bdtheme

尝试以下操作:post\\u type=custom\\u post type slug

<?php
    global $paged;  
        if( get_query_var( \'paged\' ) ) {
            $paged = get_query_var( \'paged\' );
        } elseif( get_query_var( \'page\' ) ) {
            $paged = get_query_var( \'page\' );
        } else {
            $paged = 1;
        }

        $args = array(
            \'post_type\'     => \'your_post_type\',
            \'paged\'         => $paged,
        );

        $blog_query = new WP_Query($args);
    ?>

    <section>
        <?php if ( $blog_query->have_posts() ) : ?>
        <?php while ( $blog_query->have_posts() ) : $blog_query->the_post(); ?>
        <?php get_template_part( \'content-parts/content\', get_post_format() ); ?>
        <?php endwhile; ?>
        <?php endif; ?>
    </section><!-- End #content -->
?>

相关推荐

WooCommerce:Pre_Get_Posts中的复杂查询

我想在获取产品时添加一个复杂的过滤。我有一些产品,其中一些链接到自定义帖子类型</此自定义帖子类型有一个转发器字段根据cookie的不同,我应该只获取在此转发器字段中具有该值的产品,我知道我可以使用:add_filter( \'pre_get_posts\', \'fwp_archive_per_page\' ); 我知道我可以像这样设置额外的元查询:$query->set( \'meta_query\', array( \'relation\' => \'