Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

218
Vistas
Sorting graphql query by acf field - React Native / Wordpress

working on a graphQl, react Native , Wordpress backend Project & struggle to find an answer. I got a query and i like to sort (or order) by an ACF field.

I'm quite new on graphQl so i don't know where to look or what yo search (if specific)

Here my query:

    const queryAllEvent = <Query query={gql`
{posts(where: {categoryNotIn: "12"}) {
    edges {
      node {
        id
        featuredImage {
          node {
            sourceUrl
          }
        }
        title
        prix {
          prix
        }
        content
        date_event {
            time
            dateEvent
          }
        
      }
    }
  }
}
`}

I like to sort it (or order as i said) by dateEvent.

Any clue?

Not specially looking for a proper answer, but where to search. Sorry for my english.

Thanks

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Ok, finally found out after a lonnnng search ! Here the answer, for the one, who'd like to see !

First of all, as javascript and php date are count in millisecond & second, need to convert the date picker acf to correct value.

/**
 * Convert values of ACF core date time pickers from Y-m-d H:i:s to timestamp
 * @param  string $value   unmodified value
 * @param  int    $post_id post ID
 * @param  object $field   field object
 * @return string          modified value
 */
function acf_save_as_timestamp( $value, $post_id, $field  ) {
    if( $value ) {
        $value = strtotime( $value*1000 );
    }

    return $value;    
}

add_filter( 'acf/update_value/type=date_time_picker', 'acf_save_as_timestamp', 10, 3 );

/**
 * Convert values of ACF core date time pickers from timestamp to Y-m-d H:i:s
 * @param  string $value   unmodified value
 * @param  int    $post_id post ID
 * @param  object $field   field object
 * @return string          modified value
 */
function acf_load_as_timestamp( $value, $post_id, $field  ) {
    if( $value ) {
        $value = date( 'Y-m-d H:i:s', $value*1000 );
    }

    return $value;    
}

add_filter( 'acf/load_value/type=date_time_picker', 'acf_load_as_timestamp', 10, 3 );

After that need to add your field to graphql_PostObjectsConnectionOrderbyEnum_values & graphql_post_object_connection_query_args:

add_filter( 'graphql_PostObjectsConnectionOrderbyEnum_values', function( $values ) {

    $values['STARTEVENT'] = [
        'value' => 'startevent',
        'description' => __( 'The date of startevent on the post', 'wp-graphql' ),
    ];

    return $values;

} );

add_filter( 'graphql_post_object_connection_query_args', function( $query_args, $source, $input ) {

    if ( isset( $input['where']['orderby'] ) && is_array( $input['where']['orderby'] ) ) {

        foreach( $input['where']['orderby'] as $orderby ) {

            if ( ! isset( $orderby['field'] ) || 'startevent' !== $orderby['field'] ) {
                continue;
            }

            $query_args['meta_key'] = 'startevent';
            $query_args['orderby'] = 'meta_value_num';
            $query_args['order'] = $orderby['order'];

        }

    }

    return $query_args;

}, 10, 3);

Finally, your field will appear on the orderby (my field is the startevent)

Capture of result

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda