循环和页面模板:我的WP_QUERY不带参数

时间:2016-07-23 作者:Marcus

我有一个循环问题,我试图将其放入自定义页面模板中。我想显示带有条件的帖子,但无论我在WP\\u查询参数中输入什么,都没有考虑。

以下是我的所有模板代码:

<?php
/*
Template Name: Trends
*/

get_header(); ?>

<section id="top">
    <?php the_post(); ?>
    <div class="intro"><?= get_the_title(); ?></div>
    <?php the_content();?>          

<?php 
$args = array(
    \'posts_per_page\' => 2
);

$latest = new WP_Query( $args ); ?>
<?php while( $latest->have_posts() ) : $latest->the_post(); ?>
    <h2><?php the_title(); ?></h2>
<?php endwhile; wp_reset_postdata(); ?>
</section>

<?php get_footer(); ?>
这段代码提供了我所有的帖子,而不仅仅是我在args上询问的2篇。但不管我放什么,它总是给我默认的循环。。。

我什么都试过了,还是不明白。

谢谢你的帮助!

**EDIT **

此代码适用于:

$query = new WP_Query(array(
    \'p\' => 42
));
但这一个没有:

$query = new WP_Query(array(
    \'post__in\' => $post_ids,
    \'post_status\' => \'publish\',
    \'ignore_sticky_posts\' => false,
    \'orderby\' => \'post__in\',
    \'posts_per_page\' => 2
));
无论我在数组中放置什么,即使它是p 参数第二个$query 显示所有我的帖子。

2 个回复
SO网友:Aftab

我看到的是,您没有遵循WP编码标准。

<?= get_the_title(); ?> 
WP编码标准中不允许使用。

现在您只收到帖子,而不是按照您提供的参数,这意味着您没有重置主WP查询。

我们可以将上述代码编写为:

<?php
/*
Template Name: Trends
*/

get_header(); ?>

// Primary loop 
<?php while( have_posts() ) : the_post(); ?>
    <section id="top">
        <div class="intro">
            <? the_title(); ?>
        </div>
        <?php the_content();?>          
<?php endwhile; ?>

<?php 
    // Paramter for getting 2 posts
    $args = array(
        \'posts_per_page\' => 2,
    );

    $latest = new WP_Query( $args ); ?>
    <?php while( $latest->have_posts() ) : $latest->the_post(); ?>
        <h2><?php the_title(); ?></h2>
    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
</section>

<?php get_footer();

SO网友:Andy Macaulay-Brook

由于我们的帮助尝试似乎不起作用,我采用了您的代码,正如当前的问题所示:

<?php
/*
Template Name: Trends
*/

get_header(); ?>

<section id="top">
    <?php the_post(); ?>
    <div class="intro"><?= get_the_title(); ?></div>
    <?php the_content();?>          

<?php 
$args = array(
    \'posts_per_page\' => 2
);

$latest = new WP_Query( $args ); ?>
<?php while( $latest->have_posts() ) : $latest->the_post(); ?>
    <h2><?php the_title(); ?></h2>
<?php endwhile; wp_reset_postdata(); ?>
</section>

<?php get_footer(); ?>
我将该模板放入新安装的WP中,并将该模板分配给一个页面。我写了四篇文章,分别是第一篇、第二篇、第三篇和第四篇。

当我查看页面时,我看到帖子4和帖子3按顺序列出。其中2个。

因此,目前问题的答案是,您的代码正在运行。