- Statut : non résolu
- Ce sujet contient 8 réponses, 4 participants et a été mis à jour pour la dernière fois par
Many, le il y a 18 années et 7 mois.
-
AuteurMessages
-
29 novembre 2006 à 1 h 14 min #449497
Bonjour,
Je souhaite personnaliser mon menu en remplacant dans le menu horizontal, les pages par les categories.
Pour afficher les categories aucun pb (cf voir le code du header)
Maintenant je souhaite filtrer les categories que je souhaite voir s’afficher dans le header, pour cela j’ai ajouté une variable dans la structure de wp_categories, le field suivant : category_menu bigint(20)Dans mon post de la category je declare la valeur 1 ou 0 pour decider si je souhaite afficher ou non la categorie dans le menu horizontal.
Pour exclure correctement les categories de la liste il est possible d’utiliser dans la fonction wp_list_cats() le parametre exclude=, exemple exclude=’1,2′ pour ne pas afficher dans la liste les categories 1 et 2
Mon probleme : il y a une erreur dans le codage de ma fonction get_excluded_category() présente dans template-functions-category.php. exclude est tjrs vide .. sniff
Merci
😉Code dans header.php:
-
$cat_excluded = get_excluded_category();
wp_list_cats(‘sort_column=category_nicename&children=0&exclude=’.$cat_excluded);
?>code dans template-functions-category.php:
function get_category_menu()
{
global $wpdb;
$query = « SELECT cat_ID FROM wp_categories WHERE category_menu=0 »;
return $wpdb->get_results($query);
}function get_excluded_category()
{
$excluded_category=get_category_menu();
$cat_excluded = « »;
if ($excluded_category) {
foreach ($excluded_category as $cat) {$cat_excluded_ID = $cat->cat_ID;
$page_category_menu = $cat->category_menu;if ($page_category_menu == « 0 » ) {
$cat_excluded = »‘ »;
$cat_excluded .= $cat_excluded_ID;
$cat_excluded .= « ,' »;}
}
}
return $cat_excluded;
}29 novembre 2006 à 11 h 16 min #585321Pourquoi ne pas mettre directement les id des catégories exclues dans l’appel wp_list_cats() ?
Rajouter une ligne à la table, je trouve ça un peu poussé, non ?29 novembre 2006 à 11 h 47 min #585322oui je suis d’accord mais l’idee est de pouvoir afficher dans le menu qlqs categories et dans la sidebar toutes les categories.
Mon pb en fait c’est ma boucle dans function get_excluded_category()
function get_category_menu()
{
global $wpdb;$query = «
SELECT cat_ID
FROM $wpdb->categories
WHERE category_menu= 0
« ;$categories = $wpdb->get_results($query);
return $wpdb->get_results($query);
}function get_excluded_category()
{
$excluded_category=get_category_menu();$cat_excluded = « »;
if ($excluded_category) {
foreach ($excluded_category as $cat) {$cat_excluded_ID = $cat->cat_ID;
$page_category_menu = $cat->category_menu;if ($page_category_menu == « 0 » ) {
$cat_excluded = »‘ »;
$cat_excluded .= $cat_excluded_ID;
$cat_excluded .= « ,' »;}
}
}
return $cat_excluded;
}j’aimerai obtenir un $cat_excluded = ‘1,2’; pour ensuite filtrer en affichage via exclude de
wp_list_cats(‘sort_column=category_nicename&children=0&exclude=’.$cat_excluded);
29 novembre 2006 à 12 h 05 min #585323alex wrote:oui je suis d’accord mais l’idee est de pouvoir afficher dans le menu qlqs categories et dans la sidebar toutes les categories.Bah tu fais appel 2 fois à la meme fonction avec des params différents ?
29 novembre 2006 à 12 h 25 min #585324AmO wrote:alex wrote:oui je suis d’accord mais l’idee est de pouvoir afficher dans le menu qlqs categories et dans la sidebar toutes les categories.Bah tu fais appel 2 fois à la meme fonction avec des params différents ?
Moi je procède ainsi sur un blog. Je fais appel à la même fonction plusieurs fois avec des paramètres différents et ça fonctionne très bien. Par contre le côté moins pratique c’est qu’à chaque fois que tu créé une nouvelle catégorie il faudra spécifier l’ID dans la partie où elle est à exclure. Mais comme tu n’as que le menu horizontal je pense que c’est gérable.
29 novembre 2006 à 12 h 57 min #585325Je ne trouve pas mon erreur
function get_category_menu()
{
global $wpdb;$query = «
SELECT cat_ID
FROM $wpdb->categories
WHERE category_menu= 0
« ;$categories = $wpdb->get_results($query);
return $wpdb->get_results($query);
}function get_excluded_category()
{
$excluded_category=get_category_menu();
//$cat_excluded_ID = $excluded_category[0]->cat_ID;
$i = 0;
foreach ($excluded_category as $cat)
{
if ( 0 < $i )
{
$cat_excluded_ID = $cat->cat_ID;
$cat_excluded = »‘ »;
$cat_excluded .= $cat_excluded_ID;
$cat_excluded .= « ,' »;
}
++$i;
}
return $cat_excluded;
}$cat_excluded; correspond à la derniere valeur de la base = à 0 soit dans 11 sur 12 (j’ai pour l’instant 12 categories)
en fait je souhaite avoir $cat_excluded = « 5,6,11 » par exemple ou les valeurs pour cat_ID (5,6,11) pour category_menu sont = 0merci
29 novembre 2006 à 14 h 14 min #585326Je comprend que l’on veuille résoudre à tout prix un problème, c’est comme ça qu’on apprendre. Mais si jamais tu changes d’avis, il y a plus simple 😉
29 novembre 2006 à 14 h 31 min #585327Merci Many
mais j’ai l’impression que ce que tu me presentes est equivalent à wp_list_cats que j’utilise déja.<?php list_cats(FALSE, '', 'ID',
‘asc’, », TRUE, FALSE,
FALSE, FALSE, TRUE,
FALSE, FALSE, », FALSE,
», », ‘1,33’,
TRUE); ?>Mon probleme reste car meme si j’utilise list_cats, comment je fais pour renseigner exclude =’1,33′ ici dans l’exmple, c’est a dire exclure les categories 1 et 33.
Je ne souhaite pas indiquer dans le code manuellement les categories à exclure, mais venir lire dans la base l’etat de la categorie, voila pourquoi j’ai ajouter la variable category_menu à wp_categories.
Quand je rentre une new categorie, je lui indique alors si je souhaite ou non la voir publié dans le menu,
si oui => valeur de category_menu = 1.
si non => valeur de category_menu = 0.Ensuite j’utilise
wp_list_cats ou list_cats (peut importe), je renseigne les valeurs à exclure, soit par exemple toutes les valeurs egale à 0.
A la fin il me faut donc un exclude = ‘1,33’ (cf exemple)donc pour resumer le pb se trouve non pas dans la fonction list_cat ou wp_list_cats
mais uniquement dans la constrution de $cat_excludedMerci
30 novembre 2006 à 7 h 47 min #585328ah oki ! Ca serait en effet plus pratique que de les rentrer manuellement. L’idée est intéressante, mais encore hors de mes compétences malheureusement. D’autres pourront surement t’aider mieux que moi 🙂
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.