[Résolu] affichage du nombre d’articles d’une catégorie (Créer un compte)

  • WordPress :6.7
  • Statut : résolu
  • Ce sujet contient 33 réponses, 3 participants et a été mis à jour pour la dernière fois par fifidibosco, le il y a 1 mois.
15 sujets de 16 à 30 (sur un total de 32)
  • Auteur
    Messages
  • #2489005
    gav974
    Participant
    Initié WordPress
    29 contributions

    Bonjour,

    no stress, nous avons discuté avec le modérateur et je presente mon corrigé :

    function noucode_category_count($atts) {

    $atts = shortcode_atts(
    array(
    'category_name' => 'uncategorized'
    ),
    $atts,
    'my_count_category'
    );


    $args = array(
    'post_type' => 'post',
    'category_name' => $atts['category_name'],
    'post_status' => 'publish',
    );


    $response_query = new WP_Query($args);


    $number_post = $response_query->found_posts;


    $render_html = "<p>Vous avez {$number_post} article(s) dans la catégorie <strong>{$atts['category_name']}</strong>.</p>";

    return wp_kses($render_html);
    }

    add_shortcode('my_count_category', 'noucode_category_count');

    #2489016
    fifidibosco
    Participant
    Initié WordPress
    28 contributions

    Bonjour ferman,

    mon problème est que je ne vois nulle part de short code à insérer dans Code Snippet. Comment est-il généré et comment le récupérer ?

    J’ai essayé le code de gav974 (avec la correction que vous avez apportée) et j’ai mis le short code qu’il indique dans le message #2488896. Le code semble fonctionné sauf qu’il indique 0 message dans la catégorie alors qu’il y en a plusieurs.

    fifi

     

     

    #2489017
    fifidibosco
    Participant
    Initié WordPress
    28 contributions

    bonjour gav974

    je vais esseyé ça, j’utilise le même short code que précédamment ?

    fifi

    #2489020
    gav974
    Participant
    Initié WordPress
    29 contributions

    Bonjour

    Le shortcode à écrire est sous cette forme [my_count_category category_name= » renseigner le nom de votre categorie » ].

    • S’il retourne 0 (donc pas d’article trouvé dans la catégorie), c’est parce qu’il a pris par défaut la catégorie « uncategorized ».
    • Dernièrement, le shortcode doit être mis dans un module de texte en fonction de ce que votre utilisé comme page builder ( elementor,divi, …)
    • si Gutenberg, vous pouvez utilisez le module code court

    En esperant avoir été le plus clair possible

    #2489021
    ferman
    Modérateur
    Maître WordPress
    7621 contributions

    mon problème est que je ne vois nulle part de short code à insérer dans Code Snippet. Comment est-il généré et comment le récupérer ?

    Comme expliqué plus haut, le shortcode, qui peut être n’importe quel mot entre crochets (pomme, poire, noisette…etc. vous pouvez si vous voulez l’appeler [votre_shortcode]),  doit être inséré dans la page où vous voulez faire apparaître votre liste via un block shortcode (code court); pas dans code snippet.

    Dans code snippet vous copiez-collez l’un des deux codes donnés par gav974 ou moi.

    Ce qui est important c’est que vous ayez le même mot dans votre shortcode et dans la fonction. Par exemple, gav974 vous a donné comme mot « my_count_category » (ça pourrait être n’importe quoi d’autre). Vous devez donc placer le shortcode [my_count_category] sur une page et vous retrouvez ce même mot dans la fonction « noucode_category_count » ( add_shortcode(‘my_count_category’, ‘noucode_category_count’) qui est mise dans code snippets.

    Pour moi ce serait par exemple [pomme] pour le shortcode et add_shortcode (‘pomme’, ‘countcateg’) pour la fonction « countcateg »

    Je crois qu’il reste une petite erreur dans le dernier code de gav974. Il faut enlever « wp_kses » avant la parenthèse.


    @gav974

    Fatal error: Uncaught ArgumentCountError: Too few arguments to function wp_kses(), 1 passed in C:\xampp\htdocs\site-testals\wp-content\themes\kadence\functions.php on line 67 and at least 2 expected in C:\xampp\htdocs\site-testals\wp-includes\kses.php:747 Stack trace: #0 ......etc

    • Cette réponse a été modifiée le il y a 1 mois par ferman.
    #2489046
    ferman
    Modérateur
    Maître WordPress
    7621 contributions

    Avant de disparaître pour quelques jours, dernières précisions.

    1.  La manière de procéder que je vous donnais ( « Vous devez donc placer le shortcode [my_count_category] …etc ») fonctionne mais elle utilise un shortcode sans attributs ce qui ne correspond pas à l’idée de @gav974. Suivez donc plutôt complètement sa méthode en utilisant un shortcode avec attributs. Copiez/collez directement le shortcode ci-dessous dans votre page autrement vous aurez des problèmes de mauvais formatage des guillemets et ça ne fonctionnera pas. Il faut bien sûr remplacer « votre_categorie  » par le nom de votre catégorie.
    2. Comme précisé plus haut il faut simplement enlever wp_kses dans le code ensuite il n’y a rien à modifier pour que ça fonctionne (même pas ‘category_name’ => ‘uncategorized’). Je pense que @gav974 vous expliquera tout ça.

     

    [my_count_category category_name="Votre_categorie"]

    #2489048
    fifidibosco
    Participant
    Initié WordPress
    28 contributions

    Bonjour

    j'ai installé Code Snippets
    J'ai créé un snippet dans lequel j'ai ajouté le code de gav974 avec les modifs 
    apportées par farman pour la catégorie "Moteurs"
    
    
    function noucode_category_count($atts) {

    $atts = shortcode_atts(
    array(
    'category_name' => 'Moteurs'
    ),
    $atts,
    'my_count_category'
    );

    $args = array(
    'post_type' => 'post',
    'category_name' => $atts['category_name'],
    'post_status' => 'publish',
    );

    $response_query = new WP_Query($args);

    $number_post = $response_query->found_posts;

    $render_html = "<p>Vous avez {$number_post} article(s) dans la catégorie <strong>{$atts['category_name']}</strong>.</p>";

    return ($render_html);
    }

    add_shortcode('my_count_category', 'noucode_category_count')

    j’ai ensuite mis le short code [my_count_category category_name="Moteurs"] dans la page.
    
    Lorsque je visualise la page ça m’affiche : <code class="western">Vous avez 0 article(s) dans la catégorie Moteurs
    
    Le code semble bien pris en compte dans la page mais le code ne semble pas compter les articles de la catégorie "Moteurs" qui en contient trois.
    • Cette réponse a été modifiée le il y a 1 mois par fifidibosco.
    #2489050
    fifidibosco
    Participant
    Initié WordPress
    28 contributions

    Bonjour

    j’ai installé Code Snippets

    j’ai créé puis activé un snippet contenant le code de gav974 avec les corrections apportées par farman, pour la catégorie « Moteurs »

     

    function noucode_category_count($atts) {

    $atts = shortcode_atts(
    array(
    'category_name' => 'Moteurs'
    ),
    $atts,
    'my_count_category'
    );

    $args = array(
    'post_type' => 'post',
    'category_name' => $atts['category_name'],
    'post_status' => 'publish',
    );

    $response_query = new WP_Query($args);

    $number_post = $response_query->found_posts;

    $render_html = "<p>Vous avez {$number_post} article(s) dans la catégorie <strong>{$atts['category_name']}</strong>.</p>";

    return ($render_html);
    }

    add_shortcode('my_count_category', 'noucode_category_count');

     

    j’ai ensuite mis le short code [my_count_category category_name= »Moteurs »] dans la page.

    Lorsque je visualise la page ça m’affiche : Vous avez 0 article(s) dans la catégorie Moteurs.

    Le code semble bien pris en compte dans la page mais ne semble pas compter les articles de la catégorie « Moteurs » qui en contient 2.

    Que faire de plus ?

    fifi

    #2489066
    gav974
    Participant
    Initié WordPress
    29 contributions

    Bonjour,

    Après de nombreux tests, (j’ai vérifié le code) celui-ci dessous est fonctionnel.

    Pour rappel, dans le shortcode, il faut notifier le nom de la catégorie, sinon il retournera zéro

    Mea-culpa pour le code erroné.


    function noucode_category_count($atts)
    {

    $atts = shortcode_atts(
    array(
    'category_name' => ''
    ),
    $atts,
    'my_count_category'
    );

    extract($atts);

    $args = array(
    'post_type' => 'post',
    'category_name' => $category_name,
    'post_status' => 'publish',
    );

    $response_query = new WP_Query($args);

    $number_post = $response_query->found_posts;

    $render_html = "<p>Vous avez {$number_post} article(s) dans la catégorie <strong>{$atts['category_name']}</strong>.</p>";

    return ($render_html);
    }

    add_shortcode('my_count_category', 'noucode_category_count');

    #2489068
    fifidibosco
    Participant
    Initié WordPress
    28 contributions

    Bonjour gav974

    il n’y a pas de mea culpa à faire, c’est super sympa de vous occuper de mon problème mais après essai ça ne fonctionne toujours pas chez moi.

    • j’ai copier le code ci-dessus, exactement
    • j’ai crée un snippet avec Code Snippets dans lequel j’ai collé le code copié ci-dessus
    • dans une page, avec Elementor, à l’aide du widget « short code », j’ai mis le short code suivant : [my_count_category category_name= » Généralités composites »], Généralités composites étant le nom de la catégorie dont je veux afficher le nombre d’articles.

    lorsque je visualise la page j’ai toujours : « Vous avez 0 article(s) dans la catégorie Généralités composites. »

    Puisque le code fonctionne bien chez vous je pense que je dois faire une connerie quelque part, mais je ne vois pas où…

    fifi

    #2489080
    ferman
    Modérateur
    Maître WordPress
    7621 contributions

    Bonjour,

    Puisque le code fonctionne bien chez vous je pense que je dois faire une connerie quelque part, mais je ne vois pas où…

    Cela devrait pourtant bien fonctionner. Les articles appartenant à cette catégorie sont bien publiés, pas en brouillon?

    #2489096
    gav974
    Participant
    Initié WordPress
    29 contributions

    Bonjour,

    Pour les catégories qui ont un nom avec plusieurs mots, il faut mettre un – (tiret) à la place d’un espace au niveau du shortcode dans votre cas :

    [my_count_category category_name= » generalites-composites »]

    Pour info, je n’ai jamais utilisé de nom de catégories avec plusieurs mots.

    Comme le précise @ferman, la code ne fonctionnera qui si vos articles, ont un statut publié ou rattaché à votre catégorie

    Pour le vérifier, aller dans l’onglet article puis sous le titre de la page, vous verrez le nombre d’articles publiés. (voir l’img associé ).

     

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2489105
    ferman
    Modérateur
    Maître WordPress
    7621 contributions

    Pour info: Le problème n’est sans doute pas avec le nom de la catégorie. Aussi surprenant que ça puisse paraître le code fonctionne même si le nom de la catégorie contient des espaces, des accents et même des caractères spéciaux.

    #2489107
    gav974
    Participant
    Initié WordPress
    29 contributions

    Bonjour  @ferman,

    Alors, il faut creuser, vers les articles afin de savoir si celle-ci ont un statut publié.

    #2489108
    ferman
    Modérateur
    Maître WordPress
    7621 contributions

    Bonjour,

    Alors, il faut creuser,

    Oui mais je trouve qu’on a déjà pas mal creusé. Les trois codes (shortcode avec attributs, variante sans attributs et get_terms) fonctionnent parfaitement chez moi quel que soit le nom de la catégorie et cela doit être pareil pour vous. Je ne vois pas trop bien ce qu’il reste à regarder.  Une différence est que pour fifidibosco le shortcode est mis en place avec Elementor (pas pour moi qui n’utilise pas Elementor) mais je ne vois pas ce que cela peut changer.

    • Cette réponse a été modifiée le il y a 2 semaines et 4 jours par ferman.
15 sujets de 16 à 30 (sur un total de 32)
  • Vous devez être connecté pour répondre à ce sujet.