yuheijotaki.com

2015/07/22 : 
WordPress でオートページャー

○HTML

<p class="more"><a href="javascript:void(0);">more</a></p>

 
○JS

var now_post_num = 10;
var get_post_num = 10;
$('.more a').click(function(){
	$.ajax({
		type: 'post',
		url: 'https://blog.yuheijotaki.com/wyjp/wp-content/themes/jotaki/more.php',
		data: {
			'now_post_num': now_post_num,
			'get_post_num': get_post_num
		},
		success: function(data) {
			now_post_num = now_post_num + get_post_num;
			data = JSON.parse(data);
			$('.postArea').append(data['html']);
			if (!data['noDataFlg']) {
				// さらに取得できる場合の処理
			} else {
				// 全件読み込んだ場合の処理
			}
		}
	});
	return false;
});

 
○more.php

<?php
	require_once("../../../wp-config.php");
	$now_post_num = $_POST['now_post_num'];
	$get_post_num = $_POST['get_post_num'];
	$next_now_post_num = $now_post_num + $get_post_num;
	$next_get_post_num = $get_post_num + $get_post_num;
	$sql = "SELECT
			$wpdb->posts.ID,
			$wpdb->posts.post_title,
			$wpdb->posts.post_content
		FROM
			$wpdb->posts
		WHERE
			$wpdb->posts.post_type = 'post' AND $wpdb->posts.post_status = 'publish'
		ORDER BY
			$wpdb->posts.post_date DESC
		LIMIT $now_post_num, $get_post_num";

	$results = $wpdb->get_results($sql);

	$sql = "SELECT
			$wpdb->posts.ID,
			$wpdb->posts.post_title,
			$wpdb->posts.post_content
		FROM
			$wpdb->posts
		WHERE
			$wpdb->posts.post_type = 'post' AND $wpdb->posts.post_status = 'publish'
		ORDER BY
			$wpdb->posts.post_date DESC
		LIMIT $next_now_post_num, $next_get_post_num";

	$next_results = $wpdb->get_results($sql);

	$noDataFlg = 0;
	if ( count($results) < $get_post_num || !count($next_results) ) {
		$noDataFlg = 1;
	}

	$html = "";

	foreach ($results as $result) {
		$html .= get_post_time('Y.m.d','false',$result->ID); // 投稿日時
		$html .= get_permalink($result->ID); // リンク
		$html .= apply_filters('the_title', $result->post_title); //記事タイトル
	}
	$returnObj = array();
	$returnObj = array(
		'noDataFlg' => $noDataFlg,
		'html' => $html
	);
	$returnObj = json_encode($returnObj);

	echo $returnObj;
?>

 
○参考