web-dev-qa-db-fra.com

Re-commander les messages dans la requête après

Pour une catégorie particulière, je devais fusionner dans un autre type de publication personnalisé. Maintenant, je voudrais recourir à la requête basée sur un champ personnalisé. Est-ce possible?

Vous trouverez ci-dessous la façon dont j'ai fusionné les requêtes.

if (in_category( 'Events' ) && is_archive()) {
    global $wp_query;
    $args = array (
        'post_type' => 'custom_post_type'
    );
    $second_query = new WP_Query( $args );
    $wp_query->posts = array_merge( $wp_query->posts, $second_query->posts );
    $wp_query->post_count = $wp_query->post_count + $second_query->post_count;
}

Merci!

1
rob-gordon

Étant donné que la méta est mise en cache dans le chargement de la page, il devrait être raisonnablement performant de le faire comme ceci (non testé):

usort( $wp_query->posts, function ( $post_a, $post_b ) {
    $a = get_post_meta( $post_a->id, 'key', true );
    $b = get_post_meta( $post_b->id, 'key', true );
    if ( $a == $b ) {
        return 0;
    }
    return ( $a < $b ) ? - 1 : 1;
} );

Il serait peut-être plus raisonnable de modifier les entrées de la requête avant son exécution, conformément aux commentaires.

3
Rarst