前提・実現したいこと
指定間隔でAJAXリクエストするjQueryプラグイン(JQuery-PeriodicalUpdater)を使用しています。
10秒ごとにWordPressの記事一覧を自動更新したいです。
発生している問題・エラーメッセージ
後述するように、読み込むファイルがHTMLだけなら良いのですが、PHPが書かれていると作動しません。
PHPもJSもエラー表示なしです。
該当のソースコード
まずこちらが、10秒ごとに.target-area
の中身を【load.php】の内容にするjQueryです。
▼【ajax.js】
jQuery
1(function($){ 2 $.PeriodicalUpdater('http://example.com/wp-content/themes/twentyseventeen-child/load.php',{ 3 method: 'get', 4 minTimeout: 10000, 5 type: 'html', 6 multiplier:1, 7 maxCalls: 0 8 }, 9 function(data){ 10 $(".target-area").text(data); 11 }); 12})(jQuery);
そして肝心の【load.php】ですが、次のようにHTMLだけなら.target-area
の中身は更新されるのですが、、
▼【load.php】
html
1<p>load.phpのファイルを読み込みました。</p>
しかし次のようにPHPがあると更新が起きません。
▼【load.php】
php
1<p>load.phpのファイルを読み込みました。</p> 2 3<?php // 記事一覧のループ 4$my_query = get_my_query( get_favorite_userid( get_current_user_id() ) ); 5include locate_template( 'template-parts/loop-post.php' ); 6/* $my_queryにはループ条件が取得され、正常に作動します。 */ 7?>
原因と対策を教えて頂ければ幸いです。
宜しくお願い致します。
###補足
上の【load.php】について補足します。
$my_query
にはget_my_query
によってループ条件が取得され、その条件が【loop-post.php】に引き継がれて記事一覧が取得されます。次の流れです。
▼【functions.php】
php
1// 記事を取得する相手を指定 2function get_my_query( $userId ){ 3 $args = array( 4 'posts_per_page' => 20, 5 'post_type' => array('post'), 6 'author' => $userId 7 ); 8 $my_query = new WP_Query( $args ); 9 return $my_query; 10}
▼【loop-post.php】
php
1<ul> 2<?php if ( $my_query->have_posts() ) : ?> 3 <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?> 4 <li><?php the_title();?></li> 5 <?php endwhile; ?> 6</ul> 7<?php wp_reset_postdata(); ?> 8<?php else : ?> 9 <p>記事なし</p> 10<?php endif; ?>
試したこと
必要な関数(WordPressの関数、get_my_query
、get_favorite_userid
)を読み込もうとしたのですが、この書き方は間違っているでしょうか?それとも別の部分の問題でしょうか?
▼【load.php】
php
1<p>load.phpのファイルを読み込みました。</p> 2 3<?php // 必要な関数の読み込み 4require_once( dirname(dirname( __FILE__ )) . '/wp-load.php' ); 5require_once( 'http://example.com/wp-content/themes/twentyseventeen-child/functions.php' ); 6?> 7 8<?php // 記事一覧のループ 9$my_query = get_my_query( get_favorite_userid( get_current_user_id() ) ); 10include locate_template( 'template-parts/loop-post.php' ); 11/* $my_queryにはループ条件が取得され、正常に作動します。 */ 12?>
補足情報(FW/ツールのバージョンなど)
WordPress 5.0
PHP 7.2.1
jQuery 3.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/12 14:00
2019/01/12 14:14
2019/01/12 14:23
2019/01/12 14:25 編集
2019/01/12 14:26
2019/01/12 14:31
2019/01/12 14:32
2019/01/12 14:58
2019/01/12 15:08 編集
2019/01/12 15:28
2019/01/12 15:31