• Resuelto ecorominas

    (@ecorominas)


    Buenos días,

    Tengo un problema en el momento de ordenar mi wp_query con varios orderby.
    El codigo es el siguiente:

    $date = $_POST[«date»];
    $date = str_replace(«/», «-«, $date);
    $paged = ( get_query_var( ‘paged’ ) ) ? get_query_var( ‘paged’ ) : 1;
    $dtz = new DateTimeZone(«Europe/Madrid»);
    $now = new DateTime(date(«Y-m-d»), $dtz);
    $avui = $now->format(«Y-m-d H:i:s»);
    $postPerPage = 36;

    $filtreDate = array(
    ‘relation’ => ‘OR’,
    array(
    ‘key’ => ‘dataInici’,
    ‘value’ => date(‘Y-m-d’,strtotime($date)),
    ‘compare’ => ‘=’,
    ‘type’ => ‘DATE’
    ),
    array(
    ‘relation’ => ‘AND’,
    array(
    ‘key’ => ‘dataInici’,
    ‘value’ => date(‘Y-m-d’,strtotime($date)),
    ‘compare’ => ‘<=’,
    ‘type’ => ‘DATE’
    ),
    array(
    ‘key’ => ‘dataFi’,
    ‘value’ => date(‘Y-m-d’,strtotime($date)),
    ‘compare’ => ‘>=’,
    ‘type’ => ‘DATE’
    )
    )
    );
    $args = array(
    ‘post_type’ => ‘tf_events’,
    ‘posts_per_page’ => $postPerPage,
    ‘paged’ => $paged,
    ‘orderby’ =>array(‘dataFi’ => ‘ASC’,’dataInici’ => ‘ASC’),
    ‘meta_query’ => $filtreDate
    );

    $loop = new WP_Query($args);

    El problema es que al mostrar los resultados no están ordenados correctamente como me gustaría. El filtro de las condiciones es correcto, pero el orderby no funciona correctamente.
    Si alguien me puede ayudar…

    Muchas gracias.

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Moderador LGrusin

    (@lgrusin)

    Usa el botón code para poner código, así no se puede ver bien.

    ¿Qué orden quieres seguir?

    Quizás sería mejor que usaras pre_get_posts, y ahí pones los argumentos.
    https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

    Un saludo

    Iniciador del debate ecorominas

    (@ecorominas)

    Perdona por no contestar antes.
    Al final ya lo soluciné.
    Muchas gracias.

    $filtreDateAvui =  array(
      'relation'    => 'AND',
      'query_horaInici' => array(
        'key'     => 'horaInici',
      ),
      'query_dataFi' => array(
        'key'     => 'dataFi',
      ),
      array(
        'relation' => 'OR',
        array(
          'key'       => 'dataInici',
          'value'     => $avui,
          'compare'   => '>=',
          'type'      => 'DATE'
        ),
        array(
          'key'       => 'dataFi',
          'value'     => $avui,
          'compare'   => '>=',
          'type'      => 'DATE'
        )
      )
    );
    
    // Filtre per defecte
    $args = array(
      'post_type' => 'tf_events',
      'posts_per_page' => 1,
      'post_status' => 'publish',
      'paged' => $paged,
      'orderby' =>array('query_dataFi' => 'ASC','query_horaInici' => 'ASC'),
      'meta_query' => $filtreDateAvui,
    );
Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • El debate ‘MULTIPLE ORDER BY CON CUSTOM FIELDS’ está cerrado a nuevas respuestas.