总是得到相同的帖子(第一个)

时间:2015-12-07 07:09:52

标签: php ajax wordpress custom-post-type

我总是得到同样的帖子。我不明白为什么我总是得到同一个帖子(第一个)而不是所有帖子。有人?

我如何获得第二个帖子或第三个帖子等? 谢谢你提前。

--

这里是lateral-fluid.js

function my_lateral_fluid() {

$data = array();

$args = array(   
        "post_type" => "portfolio",
        "posts_per_page" => -1  
);  

$portfolio_query = new WP_Query($args);                 

while($portfolio_query -> have_posts() ){
    $portfolio_query -> the_post();

    $data = '
        <div id="all-content" class="container abs-position">
            <div id="primary" class="content-area-ajax text-center"> 
                <main id="main" class="site-main" role="main">              
                    <article id="post-'. get_the_ID().'"'. post_class().'>
                        <h1 class="entry-title">'.get_the_title().'</h1>
                        <div class="entry-content">'.get_the_content().'</div>
                    </article>
                </main>
            </div>     
        </div>  
        ';

}
wp_reset_postdata();


echo '<div id="postdata">'.$data.'</div>';

wp_die();
}

3 个答案:

答案 0 :(得分:1)

have_posts()循环中,每次都覆盖$data,然后仅在循环完成后输出它,这只显示循环中的最后一个帖子(最新帖子)。

将每篇帖子附加到$data(使用$data .= <html code>)或在while循环中移动echo '<div id="postdata">'.$data.'</div>';

答案 1 :(得分:0)

您好,您使用过普通变量。 当循环继续时,旧数据将被新帖替换。 所以要么你可以做

$data='';
while($portfolio_query -> have_posts() ){
 $data.= '
        <div id="all-content" class="container abs-position">

休息代码将是相同的。

答案 2 :(得分:0)

试试这个:

function my_lateral_fluid() {

$data = '';

$args = array(   
        "post_type" => "portfolio",
        "posts_per_page" => -1  
);  

$portfolio_query = new WP_Query($args);                 

if ( $portfolio_query -> have_posts() ) {
    while( $portfolio_query -> have_posts() ){
        $portfolio_query -> the_post();

        $data .= '
            <div id="all-content" class="container abs-position">
                <div id="primary" class="content-area-ajax text-center"> 
                    <main id="main" class="site-main" role="main">              
                        <article id="post-'. get_the_ID().' " '. post_class().'>
                            <h1 class="entry-title">'.get_the_title().'</h1>
                            <div class="entry-content">'.get_the_content().'</div>
                        </article>
                    </main>
                </div>     
            </div>  
            ';

    }
}
wp_reset_postdata();

die($data);
}

在您的ajax操作中,使用my_lateral_fluid代替lateral_fluid。此外,由于您已定义jQuery(function($){...});,因此您可以在代码中的任何位置使用$代替jQuery

在您的ajax通话中,您希望在append<div id="postdata"></div>;数据。