Galerie WP par défaut - affiche uniquement les galeries d'une certaine catégorie

4

J'utilise la galerie par défaut de WordPress et y ajoute des catégories. J'ai maintenant créé un shortcode avec une boucle pour obtenir les galeries sur une page:

if(! function_exists('test_shortcode')){
function lv_gallery_style_one_shortcode($atts, $content = null){
    extract(shortcode_atts( array(
        'title'=>'',
        ), $atts) );

        $port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );
        $loop=new WP_Query($port);
        while ( $loop->have_posts() ) : $loop->the_post(); 

        // HERE IS THE LOOP

        return $html;
}
add_shortcode('gallery_test', 'test_shortcode' );

Je sais que la boucle a bien fonctionné, car lorsque je supprime 'category_name' => 'beach' , toutes les catégories sont affichées.

--------------- MODIFIER: -----------------

La galerie que j'utilise a l'icône et l'option suivantes:

Jepensaisquec'étaitlagalerieWPstandard,est-cequejemetrompe?

Lorsquejecréeunenouvellegalerie,unesectionCatégoriesetrouveàdroite:

À quoi sert-il si je ne peux pas les utiliser? Je ne comprends pas.

--------------- mettre fin à l'EDIT: -------------

Ceci est juste un exemple de code. Dans la version complète, le nom de la catégorie sera un paramètre à saisir dans le shortcode, c’est pourquoi je voudrais le faire comme ceci.

Avez-vous des idées sur la façon de faire fonctionner cela?

Toutes les suggestions sont appréciées:).

Merci.

    
posée Serge Inácio 27.02.2018 - 21:50

2 réponses

2

Je suppose que ces Gallery Categories ne sont pas la taxonomie category . C’est probablement une taxonomie enregistrée, enregistrée par le même script qui a ajouté le type de publication de la galerie.

Pour le savoir, cliquez sur le Gallery Categories (dans l'image fournie) et vous serez redirigé vers une URL telle que celle-ci:

http://example.com/wp-admin/edit-tags.php?taxonomy=my-taxonomy&post_type=gallery

Vérifiez l'argument taxonomy . S'il s'agit de category , votre taxonomie est personnalisée et vous devez ajouter un tax_query à votre WP_Query . Voici comment faire:

Vos arguments changeraient simplement de ceci:

$port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );

À ceci:

$port = array(
     'post_type' => 'gallery', 
     'showposts' => -1,
     'tax_query' => array (
          array(
              'taxonomy' => 'my-taxonomy',
              'field'    => 'slug',
              'terms'    => 'beach',
          )
     )
);

Remarque latérale:

Assurez-vous d'utiliser wp_reset_postdata(); juste avant le return $html; . Cela réinitialisera la requête et garantira que votre code court n'affectera aucune autre requête de la page.

Tout est fait.

    
réponse donnée Jack Johansson 03.03.2018 - 18:26
3

D'après votre question, je comprends que vous travaillez avec une installation WordPress standard. Cela signifie qu'il n'y a pas pas post-type appelé 'galerie' . Si vous (ou un plugin) en avez créé un, parfaitement possible , vous pouvez ignorer ce qui suit, car dans ce cas, je ne peux pas savoir ce qui se passe ni comment vous devez utiliser du code que je ne sais pas.

Du fait que vous souhaitiez créer un shortcode, je comprends que vous souhaitez insérer des images dans un message ou une page standard, mais au lieu de répertorier les images, comme dans le default gallery-shortcode , vous souhaitez inclure une catégorie et WP doit insérer des images avec une certaine étiquette.

Tout d’abord, essayons de comprendre ce qui se passe avec votre code en ce moment. Comme vous pouvez le voir dans les spécifications de wp_query, le par défaut post_type est 'post' . Donc, si vous utilisez un post_type comme galerie non existant, il prendra "post" à la place. Cependant, il existe pas de catégorie par défaut . Donc, si vous spécifiez un category_name qui n'existe pas, la requête ne donnera aucun résultat.

Voyons maintenant comment WP gère les médias. Chaque image est stockée sous forme de message avec le type "pièce jointe". Ce message a un identifiant. Le shortcode par défaut de la galerie est essentiellement une liste d'identifiants. Malheureusement, lorsque vous téléchargez une image, il n’est pas possible de lui attribuer une catégorie. Vous ne pouvez donc pas récupérer les images par catégorie. Cependant, cela peut être facilement résolu :

function wpse295373_add_categories_to_attachments() {
    register_taxonomy_for_object_type ('category', 'attachment');
    }
add_action ('init', 'wpse295373_add_categories_to_attachments');

Vous aurez maintenant la possibilité de donner une catégorie aux images lorsque vous les téléchargerez. Vous pouvez donc également utiliser la catégorie pour les récupérer dans votre shortcode:

$port=array('post_type' => 'attachment', 'category_name' => 'beach', 'showposts' => -1 );

Cela devrait renvoyer toutes les images de la catégorie plage.

Maintenant, d'après votre question, il n'est pas clair si c'est ce que vous voulez. Peut-être que vous voulez dire que vous voulez récupérer des galeries d'images. Donc, vous avez une galerie appelée «Espagne» dans la catégorie «plage», contenant cinq images, une autre galerie appelée «France» et ainsi de suite. Si c'est ce que vous voulez, vous devrez créer votre propre post_type .

    
réponse donnée cjbj 03.03.2018 - 13:35

Lire d'autres questions sur les étiquettes