私はこのようなクエリを持っている私は製品のIDを取得します。これはうまくいきます:
function ids(){
$args = array(
'numberposts' => -1,
'post_type' => 'product',
'meta_key' => 'wppl_is_dax',
'meta_value' => '1'
);
// query
$the_query = new WP_Query( $args );
if( $the_query->have_posts() ): while( $the_query->have_posts() ) : $the_query->the_post();
global $product;
return $product->get_id();
endwhile; endif; wp_reset_query();
}
しかし、今、私は以下で上記のクエリからの出力を使用したいです。
function tester2(){
$targetted_products = array(/* the ids from above function- ids()*/);
}
$ targetted_products = array(ids());を使用した場合、IDが1つだけになります。
あなたの関数は$product->get_id();
を返します。その代わりに、それらの値を配列に保存し、最後にその配列を返すべきです。
function ids(){
$args = array(
'numberposts' => -1,
'post_type' => 'product',
'meta_key' => 'wppl_is_dax',
'meta_value' => '1'
);
// query
$the_query = new WP_Query( $args );
$allIds = array();
if( $the_query->have_posts() ): while( $the_query->have_posts() ) : $the_query->the_post();
global $product;
array_Push($allIds,$product->get_id());
endwhile; endif; wp_reset_query();
return $allIds;
}
IDだけが必要な場合は、fields
パラメータを使用してその1つのフィールドを配列に戻すだけで、クエリのメモリ消費量がはるかに少なくなります。
function ids(){
$args = array(
'numberposts' => -1,
'post_type' => 'product',
'meta_key' => 'wppl_is_dax',
'meta_value' => '1'
'fields' => 'ids'
);
$the_query = new WP_Query( $args );
if( $the_query->have_posts() ){
return $the_query->posts;
}
return false;
}
function ids(){
$args = array(
'numberposts' => -1,
'post_type' => 'product',
'meta_key' => 'wppl_is_dax',
'meta_value' => '1'
);
// query
$the_query = new WP_Query( $args );
$post_ids = [];
if( $the_query->have_posts() ):
$post_ids = wp_list_pluck( $the_query->posts, 'ID' );
endif;
wp_reset_query();
return $post_ids;
}
続きを読む https://codex.wordpress.org/Function_Reference/wp_list_pluck