web-dev-qa-db-ja.com

get_query_var関数がまったく機能しない

はい、この関数に関するいくつかの類似したトピックがあります。 同じ結果を得るget_query_var( 'paged')

ブログ投稿のソートはget_query_varを使用している間はうまくいきません

私はwordpress3.5を使用しています、私は私のown php mysqlベースのシステムを持っています、そして私はブログ機能を統合する必要があります、そして私はlatest postsを別々のphpファイルoreder by post-dateにリストする必要があります。基本的に、私の要求は単純です:

list all of posts on a php file, suppose this file's name is blog_show.php

私はWordPressの外部のWordPressのAPIを使用するので、最初にWordPressをインポートする必要があります、あなたはここから方法を見つけることができます あなたのサイトとの統合WordPress

これが私のblog_show.phpの一部です

define('WP_USE_THEMES', false);
require_once '../blog/wp-load.php';

global $wp_query;
wp_reset_query();

$current_page = (get_query_var('p')) ? get_query_var('p') : 1;

$query_args = array(
    'orderby' => 'date',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 2,
    'paged' => $current_page,
    //'add_args' => true

);
$lateset_posts = new WP_Query($query_args);


$paging_args = array(
    'base'         => '%_%',
    'format'       => '?p=%#%',
    'total'        => 10,
    'current'      => $current_page,
    'end_size'     => 1,
    'mid_size'     => 1,
    'prev_next'    => True,
    'prev_text'    => __('« Previous'),
    'next_text'    => __('Next »')
);
$lateset_posts_paging = paginate_links($paging_args);

すべて問題ありません、私は使うことができます

$lateset_posts = new WP_Query($query_args);

私がしたいことを投稿を見つけるために。でも使えない

get_query_var('p')

私はいつも同じ値を得ます。そして、私はwp_queryがグロッタブルであると宣言したとしても、それはまだ使用できない、wp_queryのほとんどすべてのフィールドはnullであることを私は見つけました。

get_query_var('p')$wp_queryになることはできませんので、私の意見も使えません。

ご覧のとおり、var pは2か所でのみ使用されています

$current_page = (get_query_var('p')) ? get_query_var('p') : 1;
$query_args = array(
       //something
       'paged' => $current_page,
    );

そして

$paging_args = array(
        'base'         => '%_%',
        'format'       => '?p=%#%', //P's here
        'total'        => 10,
        'current'      => $current_page,
        'end_size'     => 1,
        'mid_size'     => 1,
        'prev_next'    => True,
        'prev_text'    => __('« Previous'),
        'next_text'    => __('Next »')
    );

ppagedまたはanything elseに変更してもテストはありますが、それでも同じエラーが発生します。

どこが悪いのですか?追加のphpファイルが必要ですか?ありがとう。

4
diligent

WordPressがすべてのクエリ文字列params($ _GET params)をquery_varsとして自動的に追加することはありません。

Query Var somevarが登録されていない場合:example.com/some-page/?somevar=hello - WordPressはsomevarを無視します

Query Var somevarが登録されている場合:example.com/some-page/?somevar=hello - WordPressはこのパラメータの値を$ wp_query-> query_vars配列に格納します

その変数をWordPressに登録することとの違いは、その値がWP_Queryオブジェクトに格納されているかどうかです。(それは関係なく$ _GETを通して利用可能であるべきです)。

カスタムクエリvarを登録するには、次のようにします。

add_filter('query_vars', 'add_my_var');
function add_my_var($public_query_vars) {
    $public_query_vars[] = 'some_unique_identifier_for_your_var';
    return $public_query_vars;
}

また、デフォルトのWordPressのquery_var名を使用しないように注意してください - おそらく競合することになるでしょう、と私は思います。

11