如果没有离开AJAX的帖子,则停止加载更多帖子

时间:2013-12-29 作者:mtthwbsh

我正在使用以下JavaScript在#work\\u项目中加载更多页面(请参阅live athttp://mtthwbsh.com):

jQuery(document).ready(function($){
$(\'.older a\').live(\'click\', function(e)  {
e.preventDefault();
$(\'.navigation\').prepend("<div class=\\"loader\\">&nbsp;</div>");

var link = jQuery(this).attr(\'href\');

var $content = \'#work_items\';
var $nav_wrap = \'.navigation\';
var $anchor = \'.navigation .older a\';
var $next_href = $($anchor).attr(\'href\'); // Get URL for the next set of posts

$.get(link+\'\', function(data){
var $timestamp = new Date().getTime();
var $new_content = $($content, data).wrapInner(\'\').html(); // Grab just the content
$(\'.navigation .loader\').remove();
$next_href = $($anchor, data).attr(\'href\'); // Get the new href
$($nav_wrap).before($new_content); // Append the new content
$(\'#rtz-\' + $timestamp).hide().fadeIn(\'slow\'); // Animate load
$(\'.older a\').attr(\'href\', $next_href); // Change the next URL
$(\'#work_items .navigation:last\').remove(); // Remove the original navigation
});

});
});
当前,如果您位于帖子的最后一页,并再次单击“加载更多”,则会再次加载相同的最后一页。如果没有留下任何页面,我希望有条件地不运行该函数(并将按钮替换为“无更多帖子”)。我该怎么做呢?

以下是我用于分页的标记:

<div id="work_items">
<?php $paged = (get_query_var(\'page\')) ? get_query_var(\'page\') : 1;
  $args=array(\'category_name\'=>\'portfolio\',\'posts_per_page\'=>4,\'paged\'=>$paged
  );
  query_posts($args); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

    <div class="box">
    <div class="thumbnail">

    <a href="<?php the_permalink(); ?>">
    <?php
        if ( has_post_thumbnail() ) {
        the_post_thumbnail();
        }   
    ?>  
    </a>
    </div><!-- THUMBNAIL -->        

    <aside>

    <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>

    </aside><!-- ASIDE -->
    </div><!-- BOX -->

<?php endwhile; ?>

我面临的另一个不相关的问题是,我每四篇文章都会有第n个孩子(4n)来填补空白,但由于某种原因,在第一组文章之后,它开始针对下一组的第一篇文章。WordPress处理元素顺序的方式有什么奇怪的地方吗?

谢谢你的帮助!

2 个回复
最合适的回答,由SO网友:matiyin 整理而成

是使用wp\\U查询:)

无论如何,为了防止在页面不足时加载帖子,您需要知道上次加载的当前页码以及存在的总页数。

现有总页数:$max=$wp\\u query->max\\u num\\u pages;当前页面:只需在加载循环中对其进行计数,因此将var设置为1,然后在每次单击加载按钮时对其进行迭代。

然后,您可以在单击按钮时和执行操作之前比较2:if(pageNum<;=max){//do your stuff}

这里有一个很好的图坦卡门,我用它来构建我自己的东西:http://www.problogdesign.com/wordpress/load-next-wordpress-posts-with-ajax/

关于你的第二个不相关的问题:这可能是因为你的标记。我看到您在包装“工作项”中加载了框,但加载后添加的新框不在该包装中只有当它有一个明确的父项时,它才起作用,因此#个工作项。方框:N(4n)

祝你好运

SO网友:EHerman

我将遵循本教程http://wp.tutsplus.com/tutorials/getting-loopy-ajax-powered-loops-with-jquery-and-wordpress/

我最近用它编译了一个页面,其中包含了砖石、同位素和ajax加载的帖子。经过一点修补,效果相当不错。

结束