まあタイトルはそれをすべて離れてそれを与えます...
これがコードです:
$args = array(
"post_type" => "page",
"post_parent" => $cat, // runs through a loop of 5, 128, 130
"posts_per_page" => -1
);
print_r($args);
$postsLang = new WP_Query($args);
while ($postsLang->have_posts()) {
$postsLang->the_post();
$postID = get_the_ID();
array_Push($result, $postID);
}
wp_reset_query();
print_r($result);
ここでprint_rは次のように出力します。
Array ( [post_type] => page [post_parent] => 5 [posts_per_page] => -1 )
Array ( [0] => 30 [1] => 23 )
Array ( [post_type] => page [post_parent] => 128 [posts_per_page] => -1 )
Array ( [0] => 30 [1] => 23 )
Array ( [post_type] => page [post_parent] => 130 [posts_per_page] => -1 )
Array ( [0] => 30 [1] => 23 )
そのため、$ argsは正しくクエリに入りますが、結果は常に同じです。現在のページの子のID(ID = 5)です。
Post_parentをstaticに設定して128と言っても、現在のページの子を取得できます。
Post_parentパラメータを削除すると、(必要に応じて)すべてのページが表示されます。
Get_postsにも同じ問題があります。これは構文は正しいと思いますが、post_parentパラメータの動作を誤解している可能性があります。
どんな考えも大歓迎です!
post_parent
は、値としてIDが指定されているページの子ページのみのみを返します。
post_parent(int) - 子ページのみを返すにはページIDを使用します。最上位エントリのみを返すには0に設定します。
特定のページだけを表示するには、page_id
、pagename
、またはpost__in
を(post_type=page
と共に)使用します。
私はあなたがむしろページを問い合わせるために特にそこにある get_pages
を使うことを勧めます。
ここでちょっと注意してください、wp_reset_query()
はquery_posts
と一緒に使われます。 wp_reset_postdata()
はWP_Query
と一緒に使うべきです
-
これは、以下のコメントからの解決策です。
Polylangは新しいカスタムパラメータ "lang"を作成します。このパラメータはデフォルトで ""に見えます。これは any の値で投稿を返すことになっています。代わりに、現在のページの言語値のみを含む投稿を返します(したがって、現在のページID = 5の子のみ)。修正として、私は今 "lang"のすべての値を持つページを取得するために "lang"の利用可能な値を手動でループしています。これがバグなのか、それとも私の環境が原因なのか、プラグインの作者に確認します。