Requête nom de la (des) categorie(s) sur Dukapress (Créer un compte)

  • Statut : non résolu
12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Messages
  • #495506
    Cedric C.
    Participant
    Maître WordPress
    612 contributions

    Bonjour,

    Je cherche à personnaliser sur le plugin Dukapress l’affichage du catalogue produits.

    Je désire que pour chaque vignette de produits affichés soit aussi affichées la ou les catégories dont ils dépendent.

    Tout se passe dans un fichier qui s’appelle dp-products.php

    Voici le code d’affichage des vignettes :

    $prod_permalink = get_permalink($product->ID);
    $category_id = get_cat_ID( ‘Category Name’ );
    $content .= ‘

    ‘;
    $content .= ‘

    ‘;
    if ($main_image !=  ») {
    $content .= ‘post_title . ‘ »>‘;
    }
    $content .= ‘

    ‘;
    $content .= ‘

    ‘;
    $content .= ‘

    post_title . ‘ »>’ . __($product->post_title) . ‘

    ‘;
    $content .= ‘

    ‘ . $product->post_excerpt . ‘

    ‘;
    $content .= ‘

    ‘ . $output . ‘

    ‘;
    $content .= $output;
    $content .= $output;
    $content .= $output;
    $content .= ‘

    ‘;
    $content .= ‘

    ‘;
    if ($count === intval($column)) {
    $content .= ‘

    ‘;
    $count = 0;
    }
    $count++;
    $all_count++;
    }
    }
    $content .= ‘

    ‘ . $page_links . ‘

    ‘;
    $content .= ‘‘;
    $content .= ‘

    ‘;
    }
    return $content;
    }

    J’ai essayé au tout début du code d’insérer un requête pour afficher la catégorie comme ceci :

    $prod_permalink = get_permalink($product->ID);
    $category_id = get_cat_ID( ‘Category Name’ );
    $content .= ‘

    ‘;
    $content .= ‘

    ‘;
    if ($main_image !=  ») {
    $content .= ‘post_title . ‘ »>
    Guy
    Participant
    Maître WordPress
    14817 contributions

    Pour trouver les catégories d’un article, la fonction WordPress est get_the_category

    foreach((get_the_category($product->ID)) as $category) {
    echo ‘cat_ID . ‘.jpg » alt= »‘ . $category->cat_name . ‘ » />’;

    IL faut savoir si les catégories de Dukapress recoupent celles de WordPress. C’est probable puisqu’ils utilisent get_cat_ID.

    #772698
    Cedric C.
    Participant
    Maître WordPress
    612 contributions

    Merci pour l’indication. J’ai essayé de l’adapter de la façon suivante :

    $content .= foreach((get_the_category($product->ID)) as $category) {
    $category->cat_ID };

    Mais j’ai une parse error :(

    Et n’ayant pas assez de connaissances en la matière, je sèche…comment résoudre cette erreur ?

    #772699
    Guy
    Participant
    Maître WordPress
    14817 contributions

    on va faire différemment 🙂

    $categories = get_the_category($product->ID);
    foreach ($categories as $category)
    {
    $arrayCat[] = $category->cat_name;
    }

    if (isset($arrayCat))
    $content .= implode (‘ | ‘, $arrayCat);

    #772700
    Cedric C.
    Participant
    Maître WordPress
    612 contributions

    Super ça avance : les catégories sont affichées mais j’ai 3 problèmes.

    D’une part cela affiche Arraymacatégorie à chaque fois et je n’arrive pas à désafficher ce « Array ».

    Secondement, mon second produit s’il dépend de la même catégorie que le premier produit affiché affiche deux fois cette même catégorie et ainsi de suite.

    Troisièmement, j’essaye de faire un lien sur le catégorie pour afficher tous les produits dépendant de cette catégorie.

    J’ai essayé de la sorte :

    foreach ($categories as $category)
    {
    $array_cat[] = $category->’<a href="' .$category_permalink .'">‘.cat_name.’</a>‘;
    }

    Mais toujours cette parse error et mes connaissances manquent.

    Bref je patauge…

    #772701
    Cedric C.
    Participant
    Maître WordPress
    612 contributions

    Bon, bon, bon,

    J’ai trouvé une solution alternative à mon problème, je vais tout simplement faire appel aux champs personnalisés, dans lesquels je mettrai le lien de la catégorie.

    #772702
    Guy
    Participant
    Maître WordPress
    14817 contributions

    ????

    cela devrait marcher !!

    il n’y a pas le debut de la boucle, mais en debut on peut mettre

    $tabCat = array();

    quand on est sur le parcours des produit mettre

    $categories = get_the_category($product->ID);
    foreach ($categories as $category)
    {
    foreach ($tabCat as $cat)
    {
    if ( $cat->term_id == $category->term_id)
    continue;
    $tabCat[] = $category;
    }
    }

    et à l’endroit où tu veux les afficher

    $affCat = array();
    if (!empty($tabCat))
    {
    foreach ($tabCat as $cat)
    $affCat[] = ‘term_id ) . ‘ » title= »‘ . sprintf( __( « Articles dans %s » ), $cat->name ) . ‘ » ‘ . ‘>’ . $cat->name.’
    }

    if (!empty($affCat))
    $content .= ‘Catégories: ‘ + implode(‘, ‘, $affCat);

    sous réserve des fautes de syntaxes, c’est à peu pres ça, c’est écrit ici donc …. il est possible que tu ais une erreur, il faudra la corriger 🙂

    #772703
    Guy
    Participant
    Maître WordPress
    14817 contributions

    non non non 🙂
    attend un peu il y aune erreur

    #772704
    Guy
    Participant
    Maître WordPress
    14817 contributions

    dans le bout de code

    foreach ($categories as $category)
    {
    foreach ($tabCat as $cat)
    {
    if ( $cat->term_id == $category->term_id)
    continue;
    $tabCat[] = $category;
    }
    }

    cela ne pouvait pas marcher :( , j’ai écrit trop vite

    je ferai une fonction

    function testID($tabCat, $term_id)
    {
    foreach ($tabCat as $cat)
    {
    if ( $cat->term_id == $term_id)
    return true;
    }
    return false;
    }

    et modifier l’autre boucle comme ça :

    foreach ($categories as $category)
    {
    if ( ! testID($tabCat, $category->term_id))
    $tabCat[] = $category;
    }

    Il existe surement en PHP une fonction testant si un élément d’un tableau existe mais je ne connais pas bien le PHP. Si elle existe, remplacer la fonction $testID par la fonction PHP.

    #772705
    Cedric C.
    Participant
    Maître WordPress
    612 contributions

    Merci,

    Ca me donne une erreur invalid argument supplied à la ligne d’affichage.

    Mais bon ça va aller comme ça je n’ai pour l’instant pas la solution donc je me rabas vers les champs personnalisés.

    mais je ne connais pas bien le PHP

    Ah vraiment ? Mais alors que devrais-je dire pour ma part ! J’aimerais avoir ta méconnaissance !

    👏

    #772696
    Guy
    Participant
    Maître WordPress
    14817 contributions

    la preuve que je le connais pas bien, mais tu aurais pu le voir tout seul 🙂

    quand on concatène des chaines en php, on met . , pas +

    la chaine d’affichage c’est :
    $content .= ‘Catégories: ‘ . implode(‘, ‘, $affCat);

    #772706
    Cedric C.
    Participant
    Maître WordPress
    612 contributions

    merci du cours, j’en prends bonne note ! 😋

12 sujets de 1 à 12 (sur un total de 12)
  • Vous devez être connecté pour répondre à ce sujet.