为什么我的Wordpress查询无法在非索引页面上运行?

时间:2017-02-09 02:25:41

标签: php wordpress

我在我的Wordpress Index(index.php)页面上运行了这个循环,它显示我的帖子没有问题。

但是如果我尝试在另一个页面上使用此代码,则找不到帖子。

任何人都可以解释原因吗?

的Ta!

    <?php
        $args = array(
            'post_type' => 'post',
                );
        $query = new WP_Query($args);
        if ( $query->have_posts() ) :
            // Start the Loop.
            while ( have_posts() ) : the_post();
                get_template_part( 'content', get_post_format() );

            endwhile;
            // Previous/next post navigation.
            twentyfourteen_paging_nav();

        else :
            get_template_part( 'content', 'none' );

        endif;
    ?>

2 个答案:

答案 0 :(得分:1)

对您的代码进行了少量修改。请试试这个。为我工作。

<?php 
        $args = array(
            'post_type' => 'post',
            'posts_per_page' => -1
                );
        $query = new WP_Query($args);
        if ( $query->have_posts() ) :
            // Start the Loop.
            while ( $query->have_posts() ):

        $query->the_post();
                get_template_part( 'content', get_post_format() );
                            endwhile;
            // Previous/next post navigation.
            twentyfourteen_paging_nav();

        else :
            get_template_part( 'content', 'none' );

        endif;
    ?>

答案 1 :(得分:1)

这里有一些重点:

请添加wp_reset_postdata();每次自定义查询后。 https://codex.wordpress.org/Function_Reference/wp_reset_postdata

此外,仅查询已发布的帖子。 &#39; post_status&#39; =&GT; &#39;发布&#39;

<?php 
        $args = array(
            'post_type' => 'post',
            'posts_per_page' => -1,
            'post_status' => 'publish'
                );
        $query = new WP_Query($args);
        if ( $query->have_posts() ) :
            // Start the Loop.
            while ( $query->have_posts() ):
                $query->the_post();
                get_template_part( 'content', get_post_format() );
            endwhile;
            // Previous/next post navigation.
            twentyfourteen_paging_nav();

            // Reset post data
            wp_reset_postdata();

        else :
            get_template_part( 'content', 'none' );

        endif;
    ?>