web-dev-qa-db-ja.com

WordPressがURLを$ query_stringに変換する方法

私のhome.phpは、(N)件の投稿と<<前へ&次へ>>リンクのリストを表示します。クリックしたら、Ajaxを使って(N)件の投稿の前後のリストを取得します。これは:私はページ全体をロードしたくないのです。投稿のリストを取得して最新に追加したいだけです。

これのために私はajaxリクエストを作り、パラメータとしてhref(URL)を送ります。問題は、WordPressがURLをグローバル$ query_stringに変換する方法がわからないことです。私自身のものを書くのではなく、WordPressのテスト済みコードを再利用したいです。助けてください

たとえば、次のURLに$ query_stringを入力します。 http://example.com/page/2/?location=boston

2
a_fan

WP::parse_request()をチェックしてください - 残念ながら、それは本当に公共の用途のために設計されたことはありません。あなたはこれを試すことができますが、波及効果はわからない。

global $wp,
       $wp_the_query;

// Grab the request_uri component of the referer URL.
if ( ! $url = parse_url( $_GET['my_referer_parameter'] ) )
    return 'Oh dear, poorly formed referer.';

// Ewww! Trick WP::parse_request by spoofing REQUEST_URI. 
$_SERVER['REQUEST_URI'] = $url['path'] . "?{$url['query']}";

$wp->parse_request();
$wp->query_posts();

// $wp_the_query should now be populated with posts queried by your referer.
while ( $wp_the_query->have_posts() ) {

    $wp_the_query->the_post();
    the_title();

}
1
TheDeadMedic

リンク処理の問題はそれ自体が興味深いのですが、Ajaxのユースケースでは、Ajaxが送信するJS変数として、より具体的な情報をページ本体に出力する方が簡単で信頼性が高いと思います。

そのための現在の一般的なやり方は、 wp_localize_script() を使ってデータを渡すことです。

0
Rarst