web-dev-qa-db-ja.com

現在の問い合わせオブジェクトからすべてのIDの配列を取得するにはどうすればいいですか?

投稿IDの配列をまとめて参加しようとしています。今のところ、私のコードでは、IDごとに1つの配列ではなく、IDごとに別々の配列を作成しているようです。

これが私が思い付いたコードです。 taxonomy.phpファイル内のインクルードの内側です。

だから基本的に、私は与えられた分類学用語の問い合わせから生じるであろう各投稿のIDを取得しようとしています。

私は非常に明白な何かを逃しているような気がしますか?ループの外側で変数を使用しようとしましたが、最初の投稿IDのみが出力されます。

<?php 

        if( function_exists( 'wpseo_local_show_map' ) ) {

        while (have_posts()) : the_post();

            $post_ids = get_the_ID();

            var_dump($post_ids);

        endwhile;

                    $params = array(
                    'id' => $post_ids,
                    'echo' => true,
                    'width' => 425,
                    'height' => 350,
                    'zoom' => 10,
                    'show_route' => true
                    );
                     wpseo_local_show_map( $params );
                }

?>

Var_dump は次のようになります 。誰かが私を正しい方向に向けることができますか?

1
itrogers

あなたはすべてのwhileループで$post_ids変数を上書きしています。それらを集めてはいけません。

それを使用して解決することができます

$post_ids = array();

while (have_posts()) : the_post();

  $post_ids[] = get_the_ID();

endwhile;

var_dump($post_ids); // this is an array of ids

しかしもっと簡単な方法があります、あなたは全体のサイクルをスキップして単に実行することができます:

if( function_exists( 'wpseo_local_show_map' ) && have_posts() ) {

  // this is an array of ids
  $post_ids = wp_list_pluck( $GLOBALS['wp_query']->posts, 'ID' ); 

  $params = array(
    'id' => $post_ids,
    'echo' => true,
    'width' => 425,
    'height' => 350,
    'zoom' => 10,
    'show_route' => true
  );
  wpseo_local_show_map( $params );
}
6
gmazzap