質問: new wp_query($args); ?> <?php if ( $sidebar->have_posts() ) : ?> <?php while ( $sidebar->have_posts() ) : $sidebar->the_post(); ?> <div class="story"> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php the_title(); ?> - <?php the_time("f j, y h:i a"); ?> </a> </div> <?php endwhile; ?> <?php endif; ?> その部分は完璧に機能します。それはパーマリンクで包まれた20の最新の投稿タイトルと投稿時間を表示します。しかし、私はもう少しやろうとしています。次の20の投稿タイトルを取得するために、一番下にload moreボタンを作成します。私は私のjqueryを知っています、そしてそれは問題ではありません。上記のhtmlのみを生成する新しいカスタム.phpテンプレートファイルでカスタムループを作成する方法を理解するための手助けが必要です。そのファイルはページ番号のパラメータを受け付けることができるようにする必要があるので、私のjavascriptは毎回インクリメントされたurlを取得することができます。どうぞよろしくお願いします。
回答: 関数をラップして、これをajax呼び出しにフックすることができます。//if you want only logged in users to access this function use this hook add_action('wp_ajax_more_links', 'my_ajax_more_links_function'); //if you want none logged in users to access this function use this hook 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' => 20 , '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().' - '.the_time("f j, y h:i a") .'</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; } それから最後にサイドバーの機能にこれを追加してください<span class="more_links"></span> <span class="get_more"> <input type="hidden" name="offset" id="offset" value="20"> <input type="submit" name="more" id="more" value="get more links"> </span> <script type="text/javascript" > jquery(document).ready(function($) { jquery('#more').click(function() { var data = { action: 'more_links', offset: jquery( '#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 jquery.post(ajaxurl, data, function(response) { var res = wpajax.parseajaxresponse(response, 'ajax-response'); jquery.each( res.responses, function() { if (this.what == 'has') { //insert links jquery(".more_links").append( this.data.html ); //update offset value jquery("#offset").val(this.data.offset); jquery(".more_links").fadein("fast"); }else{ //no more links found jquery(".more_links").append( this.data.html ); jquery(".get_more").remove(); } //end if });//end each }); return false; }) }); </script> それでは、wp-ajax-responseを追加する必要があります。add_action('wp_head','add_scripts_121'); function add_scripts_121(){ wp_enqueue_script('wp-ajax-response'); } そしてあなたは設定されています