我在WP上有网站。
我正在使用AJAX来展示我的帖子。点击“更多”按钮会出现另外两个帖子。当我显示所有帖子时,我试图隐藏按钮。但出了点问题。
我不明白如何将帖子数量计入JS(这是另一种变体),因为构造var posts_count = "<?php echo $posts_count; ?>
不起作用 - 它只提供字符串!
JS
$(function () {
var posts = 2; //posts shown
var posts_offset = 2;
$("#load-post").click(function (e) {
e.preventDefault();
$.ajax({
type: "GET",
url: "/wp-admin/admin-ajax.php",
data: ({
action: 'loadMore',
posts_offset: posts_offset
}),
success: function (data) {
$('.news #content').append(data);
posts_offset += 2;
}
});
});
});
PHP
function loadMore() {
$posts_count = wp_count_posts()->publish;
$posts_offset = $_GET['posts_offset'];
// get your $_GET variables sorted out
// setup your query to get what you want
query_posts( array( 'posts_per_page' => 2, 'offset'=> $posts_offset ) );
// initialsise your output
$output = '';
// the Loop
while (have_posts()) : the_post();
?><div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 news-item">
<div class="news-date">
<?php the_time($format = "j F Y") ?>
</div>
<div>
<h3><?php the_title() ?></h3>
<p><?php the_content() ?></p>
</div>
</div><?php
endwhile;
if ($posts_count - ($posts_offset + 2) <= 0) { ?>
<script>$("#load-more").hide();</script>
<?php }
// Reset Query
wp_reset_query();
die($output);
}
此代码有效,但隐藏按钮的部分不起作用
答案 0 :(得分:1)
您不是echo
脚本部分。
if ($posts_count - ($posts_offset + 2) <= 0) {
echo '<script>$("#load-more").hide();</script>';
}
为什么你不将javascript部分与php分开?如果你从ajax处理脚本逻辑会更优雅。在php中,如果条件不满足,则发回一些响应,然后从javascript处理DOM操作。
答案 1 :(得分:1)
按如下方式更改您的代码:
PHP
中的
<script>function hideLoadMore(){$("#load-more").hide();}</script>
并在JS
success: function (data) {
$('.news #content').append(data);
posts_offset += 2;
if(hideLoadMore) {
hideLoadMore();
}
}