- Statut : non résolu
- Ce sujet contient 16 réponses, 4 participants et a été mis à jour pour la dernière fois par
Gueblo, le il y a 12 années et 10 mois.
-
AuteurMessages
-
28 mars 2012 à 15 h 45 min #507614
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 filleJ’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
28 mars 2012 à 15 h 54 min #824601quand 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é.28 mars 2012 à 16 h 10 min #824602‘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.
28 mars 2012 à 16 h 14 min #824603category et categorie 🙂 pffff j’avais même pas vu, bien vu Laurent
28 mars 2012 à 16 h 22 min #824604Non, 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à !
30 mars 2012 à 9 h 44 min #824605Je 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.30 mars 2012 à 10 h 57 min #824606Peux 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.
30 mars 2012 à 12 h 43 min #824607Voici 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
30 mars 2012 à 13 h 12 min #82460819 mai 2012 à 9 h 33 min #824609J’fais un petit up, jme remet à bosser dessus et j’coince toujours autant x)
19 mai 2012 à 12 h 42 min #824610$parentCat = $idCat; devrait être avant ‘parent’=>$parentCat, non ?
sinon dans ton code, le parent est forcément = 019 mai 2012 à 13 h 04 min #824611C’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.19 mai 2012 à 13 h 18 min #824612dans une boucle wordpress ? tu pourrais mettre le code complet stp ?
19 mai 2012 à 13 h 42 min #824613Le 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é.
19 mai 2012 à 13 h 49 min #824614 -
AuteurMessages
- Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.