web-dev-qa-db-fra.com

Ordre des postes par nombre de taxonomie

J'ai créé un nouveau type de message (hôtels) et des taxonomies (localisation).

Je veux boucler la commande de mes hôtels en comptant le DESC des taxonomies. Je veux trier mon hôtel par nombre de localisations (je veux dire par ordre de plusieurs hôtels en localisation par moins d'hôtels).

J'essaye ceci:

    $args = array(
        'post_type' => 'hotels',
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => 'taxonomy_localisation',
                'field'    => 'term_id',
                'orderby'    => 'count',
                'order'    => 'DESC',
                'terms'    => $localisation_child->term_id,
            ),
        ),
    );

Est-il possible d'utiliser WP_query args?

1
Vincent Decaux

ce sujet pourrait vous aider. Par défaut, args de WP_Query - cela est impossible.

Je ne pense pas que vous puissiez le faire directement. Bien que vous puissiez enregistrer le nombre de termes pour chaque publication dans un champ méta personnalisé (après publication), puis dans votre requête, définissez le tri en fonction de ce champ méta. Ou, tout en exécutant votre requête, vous pouvez enregistrer le nombre de termes avec les identifiants de publications dans un autre tableau, puis les trier par comptage et imprimer les publications. La seconde consommera plus de ressources, je recommanderais donc la première méthode.

SELECT p.ID, COUNT (*) count FROM wp_term_relationships r, wp_posts p, wp_term_taxonomy x WHERE r.object_id = p.ID AND p.post_type = 'post' ET r.term_taxonomy_id = x.term_taxonomy_id et x.taxonomy_x 'GROUP BY object_id ORDER BY nombre;

vous ne pouvez pas le faire directement, vous avez besoin d'un filtre et d'un CAS dans l'ordre, par exemple

1
Maxim Sarandi