wordpress 非插件 实现文章的无限加载
2015-05-26 16:52
435 查看
刚学习wordpress 写一个网站的文章的无限加载,本来想的好难啊,但是真的自己写了之后感觉真的挺简单的,所以啊一定要做一下小小的总结:首先你要确定你的wordpress的jQuery功能能用你可以在header.php里wp_head();前面加上wp_enqueue_script('jquery'); 一定要在他的前面,这加载的是wordpress自带的jQuery,也可以加载自己的,方法就不用我说了。然后就是要写ajax异步调用了。不过我还真的对ajax不太熟悉。不过别人写的方法借用了一下。首先:在你要实现无限加载的也面加入ajax代码:
<script type="text/javascript">/** jquery scroll ajax load more post*/var count=-10;initOne = true;jQuery(document).ready(function(){if(initOne){ajaxLoadMose(10);}});stop=true;jQuery(document).scroll(function(){totalHeight = parseFloat(jQuery(window).height()) + parseFloat(jQuery(window).scrollTop());if( jQuery(document).height() <= totalHeight+560){if(stop && !(initOne)){stop=false;jQuery('#main-list').append('<div class="bottom-loading loading" align="center"> loading.......</div>');setTimeout(function(){ajaxLoadMose(10);},100);}}});function ajaxLoadMose(num){count+=num;jQuery.ajax({type: 'post',url: '/wp-admin/admin-ajax.php',dataType: "json",data: { action:'ajaxLoadMore' , amount:num,count_:count},success: function(data){if(data.length){var total = parseInt(jQuery('#main-list').attr('data-count'))+data.length;jQuery('#main-list').attr('data-count',total);for(i=0; i<data.length;i++){p = data[i];// alert(p['count']+"本来就有的数据数目");var outHtml = '<article id="post-'+p['ID']+'" >';outHtml += '<header class="entry-header">';outHtml += '<h2 class="entry-title"><a href="' +p['url']+ '" rel="bookmark" title="'+p['title']+'">'+p['title']+'</a></h2>' ;outHtml += '<input type="hidden" id="post_url_hidden_'+p['ID']+'" name="post_url_hidden" value="'+p['url']+'">';outHtml += '</header>';outHtml += p['img'];outHtml += '</article>';jQuery('#main-list').append(outHtml);var article = jQuery(outHtml).hide();//jQuery('#main-list').append(article);article.fadeIn('fast');}initOne=false;stop=true;jQuery('#main-list').removeClass('bottom-loading loading');if(jQuery('.bottom-loading').length>0){jQuery('.bottom-loading').remove();}if(data.length<num){if(jQuery('.bottom-loading').length>0){jQuery('.bottom-loading').remove();}jQuery('#main-list').append('<div class="the-end" align="center">End</div>');stop=false;}}else{}},error:function(){console.log("error");}});}</script>然后在function.php 中加入function
add_action('wp_ajax_ajaxLoadMore','ajaxLoadMore');add_action('wp_ajax_nopriv_ajaxLoadMore','ajaxLoadMore');function ajaxLoadMore(){$amount = @$_POST['amount'];$count = @$_POST['count_'];global $wpdb;$sql = "SELECT ID,post_title,post_name from lasv_posts WHERE post_status='publish' AND post_type='post' ORDER BY post_date DESC LIMIT $count,$amount";$rs=$wpdb->get_results($sql);query_posts(array('paged' => $amount));if ( have_posts() ) :while ( have_posts() ) : the_post();get_template_part( 'content', 'index' );endwhile;else ://get_template_part( 'content', 'none' );endif;$arrList = array();foreach($rs as $k){$p_id = $k->ID;$title = get_post($p_id)->post_title;$url =get_post($p_id)->post_name;$img = '';$attr = array('class' => "attachment-twentyfourteen-full-width wp-post-image img-buy-s-".$p_id ,'title' => $title,);// Post thumbnail.// video img type: default , hqdefault , mqdefault , sddefault , maxresdefault//get_the_post_thumbnail($p_id,'medium' , $attr );$img_path = get_video_img_path($p_id,'mqdefault');$img= '<a href="'.$url.'.html" class="img-a"><span class="'.show_post_style($p_id).'"></span></span><img src="'.$img_path.'"></a>';$arrList[] = array('ID' => $p_id ,'title' => $title ,'img' => $img ,'url' => $url ,//'end' => $end,'count'=>$count,);}echo json_encode($arrList );exit;}前面的add_action();必不可少这个方法主要写要返回前台数据。这就可以了还有网页上要有div id 为main-list就可以了
相关文章推荐
- wordpress教程:使用linkwithin插件实现wordpress文章图文关联
- Blocksit插件实现瀑布流数据无限( 异步)加载
- WordPress中无需插件实现文章列表分页
- 不用任何插件实现WordPress文章点击数
- 实现wordpress文章浏览次数统计—使用WP-Postviews插件
- WordPress无插件如何实现文章分页
- Blocksit插件实现瀑布流数据无限( 异步)加载
- BlocksIt.js瀑布流插件结合ajax实现无限加载数据
- wordpress和jquery实现点击加载更多文章的详细方法
- WordPress非插件版post_view实现文章点击量统计功能
- 非插件实现wordpress随机文章
- WordPress 非插件实现文章列表分页导航
- WordPress 实战:在wordpress文章中加入分享到微博及社交网站的按钮(代码实现,非插件)
- 免插件实现WordPress文章阅读次数
- 【无限滚动加载数据】—infinite-scroll插件的使用
- Widget logic插件实现wordpress侧边栏布局
- 调用WordPress函数统计文章访问量及PHP原生计数器的实现
- 黄聪:解决wordpress定时发布文章失败”丢失计划任务”的插件
- jquery.lazyload 插件实现图片延迟加载
- jquery实现图片延时加载插件【多处转载】