import xml – création de catégories et sous catégories (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 17)
  • Auteur
    Messages
  • #507614
    ozf
    Membre
    Padawan WordPress
    87 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 3.3
    – Version de PHP/MySQL : 5 et 5
    – Thème utilisé : Graphène
    – Extensions en place : aucune
    – Nom de l’hebergeur : local
    – Adresse du site :

    Problème(s) rencontré(s) :

    je rencontre un problème lors d’un import de produits depuis un flux XML. Dans mon flux, les produits sont signalés dans une catégorie de cette manière :
    catégorie mère > sous-catégorie
    ou
    catégorie mère > sous-catégorie > sous-catégorie fille

    J’ai donc coupé la chaine sur le caractère « > » pour insérer les 2, ou 3 catégories dans ma base. Jusque là tout va bien.
    Par contre j’ai voulu logiquement gérer la parenté des catégorie. Il y a 4 catégories principales, et une vingtaine de sous catégories. Mais mon script ne m’insère pas les sous-catégories correctement. Dans mon interface d’administration je vois bien « 20 catégories », mais seules les 4 principales sont visibles.

    Voici mon code :

    $splitCat = split(‘>’, $rubori);
    $parentCat = 0;
    foreach($splitCat as $cat){
    $cat = trim($cat);
    if(!empty($cat)){
    $idCat = term_exists(ucfirst($cat), ‘categorie’);
    if(!$idCat){
    $idCat = wp_insert_term(ucfirst($cat), ‘categorie’, array(
    ‘description’=>$product->rubrori,
    ‘parent’=>$parentCat,
    ‘slug’=>sanitize_title($cat)));
    $parentCat = $idCat[‘term_id’];
    }else{
    $parentCat = $idCat;
    }
    $categorie = $cat; //La dernière categorie est celle que l’on doit tagger pour le produit
    }
    }

    Je pense que le problème vient avec le lien du parent. Ca fait un bon moment que je bloque là dessus et je ne trouve pas de solutions :(

    #824601
    Guy
    Participant
    Maître WordPress
    14817 contributions

    quand tu regardes dans les tables (avec phpmyadmin) ils existent ou pas?
    Et d’autre part, term_exists, quand le paramètre taxonomy est renseigné retourne un tableau, il est donc possible que ton argument $parentCat ne soit pas correctement renseigné.

    #824602
    Laurent H
    Membre
    Chevalier WordPress
    126 contributions

    ‘categorie’ > ‘category’, non ? Et à priori, peut-être une petite erreur sur le retour de term_exists, qui renvoit un objet dans le cas ou la catégorie existe, et non pas un id.

    #824603
    Guy
    Participant
    Maître WordPress
    14817 contributions

    category et categorie 🙂 pffff j’avais même pas vu, bien vu Laurent

    #824604
    ozf
    Membre
    Padawan WordPress
    87 contributions

    Non, catégorie est une taxonomie que j’ai créée pour un type d’articles :

    $labels = array(
    ‘name’ => _x( ‘categorie’, ‘taxonomy general name’ ),
    ‘singular_name’ => _x( ‘Catégorie’, ‘taxonomy singular name’ ),
    ‘search_items’ => __( ‘Rechercher dans catégorie’ ),
    //’popular_items’ => __( ‘Termes le plus souvent utilisé’ ),
    ‘all_items’ => __( ‘Toutes les catégories’ ),
    ‘parent_item’ => null,
    ‘parent_item_colon’ => null,
    ‘edit_item’ => __( ‘Editer catégorie’ ),
    ‘update_item’ => __( ‘MAJ de catégorie’ ),
    ‘add_new_item’ => __( ‘Ajouter un terme dans catégorie’ ),
    ‘new_item_name’ => __( ‘Nouvelle catégorie’ ),
    ‘separate_items_with_commas’ => __( ‘Separer les catégorie avec une virgule’ ),
    ‘add_or_remove_items’ => __( ‘Ajouter ou supprimer une catégorie’ ),
    ‘menu_name’ => __( ‘Catégorie’ )
    );
    register_taxonomy(‘categorie’,’produit’,array(
    ‘hierarchical’ => true,
    ‘labels’ => $labels,
    ‘show_ui’ => true,
    ‘query_var’ => true,
    ‘rewrite’ => array( ‘slug’ => ‘categorie’ ),
    ));

    Les catégories apparaissent bien dans la base de données. Mais l’id parent semble être tout le temps à 1. Je pensais que term_exists retournait l’id (après avoir vérifié sur le codex 😕… ). Je cherche de ce côté là !

    #824605
    ozf
    Membre
    Padawan WordPress
    87 contributions

    Je comprend toujours pas :( dans la base de données ça semble correct cette fois, mais même si dans l’interface il me dit qu’il y a 20 catégories, il n’en affiche que 3.
    Des idées?
    Quelqu’un n’aurait pas un code pour ajouter dynamiquement des taxonomies hiérarchisées avec leur « sous taxonomies » ? Ca me permettrait surement de trouver mon erreur.

    #824606
    Guy
    Participant
    Maître WordPress
    14817 contributions

    Peux tu mettre un exemple de fichier xml généré et le code modifié qui l’injecte, sinon je vois que dans term_exists, tu cherches le nom avec une majuscule, je pense que term_exists se base sur le slug (ou l’ID), il y a peut être confusion à ce niveau si des taxos ont des noms proches.

    #824607
    ozf
    Membre
    Padawan WordPress
    87 contributions

    Voici un produit du flux :


    Chaussures > Boots]]>

    Ce que je ne comprend pas c’est que l’id parent correspond bien à l’id de la taxonomie voulue. Donc term_exists retourne bien ce qu’il me faut :(

    #824608
    ozf
    Membre
    Padawan WordPress
    87 contributions

    Ptet qu’avec ces images ça sera plus clair :
    après l’import, quand je vais dans les catégories de mes produits voila ce que j’ai :

    mini_120330032811991600.jpg

    et quand je regarde mes produits, il me propose les catégories :

    mini_120330032838718626.jpg

    et je n’arrive pas à assigner une catégorie à un produit. :(

    #824609
    ozf
    Membre
    Padawan WordPress
    87 contributions

    J’fais un petit up, jme remet à bosser dessus et j’coince toujours autant x)

    #824610
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    $parentCat = $idCat; devrait être avant ‘parent’=>$parentCat, non ?
    sinon dans ton code, le parent est forcément = 0

    #824611
    ozf
    Membre
    Padawan WordPress
    87 contributions

    C’est dans une boucle. Les catégories dans le flux sont sous forme
    Homme > Boots
    Donc Homme a le parent à 0, Boots est censé l’avoir à l’identifiant Homme. Un echo sur $parentCat me retourne bien l’identifiant voulu avant l’insertion.

    #824612
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    dans une boucle wordpress ? tu pourrais mettre le code complet stp ?

    #824613
    ozf
    Membre
    Padawan WordPress
    87 contributions

    Le code est déjà dans mon premier post, je coupe la chaine récupérée en XML et je l’envoie dans la boucle foreach. Je regarde pour mettre le script complet sur un site pour une meilleure visibilité.

    #824614
    ozf
    Membre
    Padawan WordPress
    87 contributions
15 sujets de 1 à 15 (sur un total de 17)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.