web-dev-qa-db-fra.com

wp_query pour afficher les pièces jointes avec une balise

Donc, j'exécute la requête suivante:

<?php
    $args = new WP_Query(array(
        'post_type' => 'attachment',
        'posts_per_page' => -1,
        'oderby' => 'title',
        'order' => 'ASC',
        'post_status' => 'any',
        'post_parent' => null,
        'tax_query' => array(
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' => 'logo'
            )
        )
    ));

    while ( $args->have_posts() ) : $args->the_post();

?>

Un problème que je dois aborder est une meilleure méthode de tri pour les pièces jointes. Actuellement, je ne peux l'obtenir que par titre ASC ou DESC. Je suis conscient des autres attributs orderby disponibles avec WP_Query mais tous ne semblent pas fonctionner. Je me demandais si quelqu'un connaissait un moyen de modifier la date de téléchargement des images dans la médiathèque, car je pouvais alors modifier ma requête pour la modifier en fonction de la date et nous pourrions simplement modifier les dates des images pour en afficher les nouvelles en premier, etc. Toutes les idées qui pourraient m'aider à mieux contrôler manuellement ce serait formidable.

Merci!

2
Danny

Donc, après avoir creusé un peu plus, j'ai pu comprendre. À l'aide du plug-in Advanced Custom Fields, j'ai créé un champ de texte qui apparaît sur les pièces jointes avec une balise spécifique qui leur est appliquée. Maintenant vous pouvez assigner une valeur et j'ai mis à jour mon WP_Query pour refléter:

<?php   
    $args = new WP_Query(array(
        'post_type' => 'attachment',
        'posts_per_page' => -1,
        'oderby' => 'meta_value_num',
        'order' => 'ASC',
        'post_status' => 'any',
        'post_parent' => null,
        'meta_query' => array(
            array(
                'key' => 'logo_sort_order'
            )
        ),      
        'tax_query' => array(
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' => 'logo'
            )
        )
    ));

    while ( $args->have_posts() ) : $args->the_post();

?>

J'espère que ceci aide quelqu'un d'autre.

1
Danny