ページネーション全体を台無しにすることなく、サイドバーのページ付け、または次/前の投稿を読み込むことは可能ですか? AJAXのような?
今私は最新の2つの投稿をロードするためにカスタム投稿タイプの投稿を問い合わせています、そしてその場所で次または前のものをロードする必要があります。
何か案は?
編集:私はBainternetの提案を試してみましたが、それでもうまくいくことができません。
私はサイドバーにこれを表示されているとおりに配置しました。
<?php $args = array('posts_per_page' => 1);
$sidebar = new WP_Query($args);
if ( $sidebar->have_posts() ) :
while ( $sidebar->have_posts() ) : $sidebar->the_post(); ?>
<div class="story">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</div>
<?php endwhile;
endif; ?>
<span class="more_links"></span>
<span class="get_more">
<input type="hidden" name="offset" id="offset" value="1">
<input type="submit" name="more" id="more" value="Get more links">
</span>
<script type="text/javascript" >
$(document).ready(function($) {
$('#more').click(function() {
var data = {
action: 'more_links',
offset: $( '#offset' ).val(),
_ajax_nonce: <?php echo wp_create_nonce( 'more_links' ); ?>
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
var res = wpAjax.parseAjaxResponse(response, 'ajax-response');
$.each( res.responses, function() {
if (this.what == 'has') {
//insert links
$(".more_links").append( this.data.html );
//update offset value
$("#offset").val(this.data.offset);
$(".more_links").fadeIn("fast");
}else{
//no more links found
$(".more_links").append( this.data.html );
$(".get_more").remove();
}
//end if
});//end each
});
return false;
})
});
</script>
そしてこれは私の機能では:
add_action('wp_ajax_nopriv_more_links', 'my_AJAX_more_links_function');
function my_AJAX_more_links_function(){
check_ajax_referer('more_links');
$success_response = new WP_Ajax_Response();
$args = array('posts_per_page' => 1 , 'offset' => $_POST['offset']);
$sidebar = new WP_Query($args);
if ( $sidebar->have_posts() ){
while ( $sidebar->have_posts() ) {
$sidebar->the_post();
$out .= '<div class="story">';
$out .= '<a href="'.the_permalink().'" title="'. the_title.'">'.the_title().'</a></div>';
}
$success_response->add(array(
'what' => 'has',
'data' => array('html' => $out, 'offset' => $_POST['offset'])
));
}else{
$out = __('Sorry but No more!');
$success_response->add(array(
'what' => 'none',
'data' => $out
));
}
$success_response->send();
exit;
}
add_action('wp_head','add_scripts_121');
function add_scripts_121(){
wp_enqueue_script('wp-ajax-response');
}
ナンスを引用符で囲む必要があり、the_permalink()
とthe_title()
の代わりにget_permalink()
とget_the_title()
を次のように使用します。
<?php $args = array('posts_per_page' => 1);
$sidebar = new WP_Query($args);
if ( $sidebar->have_posts() ) :
while ( $sidebar->have_posts() ) : $sidebar->the_post(); ?>
<div class="story">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</div>
<?php endwhile;
endif; ?>
<span class="more_links"></span>
<span class="get_more">
<input type="hidden" name="offset" id="offset" value="1">
<input type="submit" name="more" id="more" value="Get more links">
</span>
<script type="text/javascript" >
$(document).ready(function($) {
$('#more').click(function() {
var data = {
action: 'more_links',
offset: $( '#offset' ).val(),
_ajax_nonce: '<?php echo wp_create_nonce( 'more_links' ); ?>'
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
var res = wpAjax.parseAjaxResponse(response, 'ajax-response');
$.each( res.responses, function() {
if (this.what == 'has') {
//insert links
$(".more_links").append( this.data.html );
//update offset value
$("#offset").val(this.data.offset);
$(".more_links").fadeIn("fast");
}else{
//no more links found
$(".more_links").append( this.data.html );
$(".get_more").remove();
}
//end if
});//end each
});
return false;
})
});
</script>
そして関数は次のようになります。
add_action('wp_ajax_nopriv_more_links', 'my_AJAX_more_links_function');
function my_AJAX_more_links_function(){
check_ajax_referer('more_links');
$success_response = new WP_Ajax_Response();
$args = array('posts_per_page' => 1 , 'offset' => $_POST['offset']);
$sidebar = new WP_Query($args);
if ( $sidebar->have_posts() ){
while ( $sidebar->have_posts() ) {
$sidebar->the_post();
$out .= '<div class="story">';
$out .= '<a href="'.get_permalink().'" title="'. get_the_title.'">'.get_the_title().'</a></div>';
}
$success_response->add(array(
'what' => 'has',
'data' => array('html' => $out, 'offset' => $_POST['offset'])
));
}else{
$out = __('Sorry but No more!');
$success_response->add(array(
'what' => 'none',
'data' => $out
));
}
$success_response->send();
die();
}