我总是得到同样的帖子。我不明白为什么我总是得到同一个帖子(第一个)而不是所有帖子。有人?
我如何获得第二个帖子或第三个帖子等? 谢谢你提前。
--
这里是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();
}
答案 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>;
数据。