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;
?>
○参考