Los campos personalizados Orderby CPT no funcionan

Aug 20 2020

Estoy desarrollando un complemento y he creado un CPT para eventos y tiene campos personalizados (uno de los campos es para la fecha).

Todo funciona bien, Fields y CPT están funcionando y mostrarlos en la interfaz también funciona. Pero el problema es que no puedo ordenar mis publicaciones CPT por fecha desde el campo personalizado llamado date_happening.

He tratado de encontrar una respuesta a mi problema en muchos artículos, pero todos apuntan a la misma solución que probé pero por alguna razón desconocida no me funciona.

Proporciono aquí el código.

Así es como creo campos personalizados para mi cpt.


  public function register()
  {
      add_action('admin_init', array($this, "atAdminInit")); add_action('save_post', array($this, "atSavePost"));
  }

  public function atAdminInit()
  {
    add_meta_box("date_happening-meta", "Date", array($this, "atDateHappening"), "aegeeevents", "side", "low"); } public function atSavePost() { global $post;

    if(is_null($post)){ return; } update_post_meta($post->ID, "date_happening", $_POST["date_happening"]); } function atDateHappening() { global $post;
    $custom = get_post_custom($post->ID);
    $date_happening = $custom["date_happening"][0] ?? '';
    ?>
    <label>Year:</label>
    <input name="date_happening" type="date" value="<?php echo $date_happening; ?>"/>
    <?php
  }

Y esto es lo que muchos artículos me dijeron sobre cómo deberían verse mis argumentos de consulta para ordenar eventos por valores de campo personalizados.

          $args = array(
            'post_type' => 'aegeeevents',
            'meta-value' => 'date_happening',
            'orderby' => 'meta_value',
            'order' => 'DESC',
          );

          $query = new \WP_Query($args);


También intenté usar 'meta_value_date', 'meta_value_num', etc. pero sin éxito. Pero si cambio los valores de orden de 'DESC' a 'ASC', entonces todas mis publicaciones vendrán en orden opuesto, por lo que parece que está consultando por valor post_date e ignora completamente mis argumentos excepto el argumento 'orden'.

También he comprobado cómo se guarda el valor del campo date_happening en la tabla de la base de datos wp_postmeta y parece estar en buen formato.

Espero que todo haya sido comprensible y agradecería que alguien me pudiera ayudar.

Respuestas

JagrutiRakholiya Aug 20 2020 at 21:33

Tienes que usar meta_key en lugar de value para que se ordene por date_happening metakey

Prueba esto:

'meta_key' => 'date_happening',
'orderby' => 'meta_value',