Obtención de una matriz de WPQuery

3

Tengo una consulta como esta, obtendré el ID del producto. Esto funciona bien:

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();

}

Pero ahora quiero usar el resultado de la consulta anterior en la siguiente página

function tester2(){

 $targetted_products = array(/* the ids from above function- ids()*/);

}

Solo obtengo un ID si lo uso  $ targetted_products = array (ids ());

    
pregunta Latheesh V M Villa 13.08.2018 - 22:43

3 respuestas

1

Tu función devuelve $product->get_id(); , en lugar de eso, debes guardar esos valores en una matriz y al final devolver esa matriz.

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;
}
    
respondido por el Castiblanco 13.08.2018 - 22:51
7

Si solo quieres ID, la consulta consumirá mucha menos memoria si utilizas el parámetro fields para recuperar ese único campo en una matriz:

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;
}
    
respondido por el Milo 14.08.2018 - 02:31
1
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;
}

lea más enlace

    
respondido por el Valeriy Vasiliev 13.08.2018 - 23:38

Lea otras preguntas en las etiquetas