8768 sujets

Développement web côté serveur, CMS

Bonjour,
je travaille sur un site wordpress. J'ai créé des catégories + sous catégories dans mon portfolio.
Mon problème : quand je suis sur la page portfolio, toutes les catégories et sous catégories apparaissent en tant que filtre. J'aimerai ne garder que les catégories parent. Quelqu'un aurait-il une idée?
J'ai vu que l'on pouvait forcer l'affichage des nom de catégorie en les appelant par leur ID mais je ne sais pas trop comment faire et sur quel fichier agir.

Merci d'avance,
Vincent

Ma configuration WP actuelle
- Version de WordPress : La dernière
- Thème utilisé : Basix
Hello Smiley smile

Tout dépend de quel marqueur de modèle utilise ton thème pour afficher la liste des catégories.

Si c'est wp_list_categories(), par exemple, tu peux utiliser le paramètre depth pour restreindre l'affichage aux catégories de premier niveau.
> wp_list_categories() sur le codex WP

Si c'est un autre marqueur de modèle, lequel est-ce ?
Si tu ne le sais pas, il faudra aller chercher le template utilisé par ton thème pour cette partie de ton site et par exemple copier ici son code, on pourra essayer de prendre le temps de l'identifier avec toi Smiley smile
Merci pour ta réponse, du coup je ne sais pas trop si c'est wp-list qui est utilisé. J'utilise un theme "Basix". Voici le code de la page portfolio :

<?php /* Template Name: Portfolio 3 Column */ ?>
<?php get_header(); ?>

<div class="main-content">

<?php if ($basix_options['page_title_style'] == 'accent_color' || $basix_options['page_title_style'] == 'main_color' || $basix_options['page_title_style'] == 'custom_color') { ?>
<div class="title-container<?php if ($basix_options['page_title_style'] == 'accent_color') { ?> accent<?php } ?><?php if ($basix_options['page_title_style'] == 'main_color') { ?> main<?php } ?><?php if ($basix_options['page_title_style'] == 'custom_color') { ?> custom<?php } ?>">
<div class="content-width">
<div class="relative">
<h1><?php the_title(); ?></h1>
<?php // Get all portfolio categories
if (get_terms('portfolio_category')) {
$sorting_terms = get_terms('portfolio_category');
?>
<?php if ($sorting_terms) { ?>
<!-- Filtering -->
<div class="portfolio-filtering">
<ul id="portfolio-filters">
<li>
<span class="filter active" data-filter="all">Show all</span>
</li>
<?php foreach ($sorting_terms as $sorting_term) { ?>
<li>
<span class="filter" data-filter=".<?php echo $sorting_term->slug ?>"><?php echo $sorting_term->name ?></span>
</li><?php } ?>
</ul>
</div>
<?php } ?>
<?php } ?>
</div>
</div>
</div>
<?php } ?>

<div class="main-content-inner content-width<?php if ($basix_options['page_title_style'] == 'accent_color' || $basix_options['page_title_style'] == 'main_color' || $basix_options['page_title_style'] == 'custom_color') { ?> title-block<?php } ?>">

<?php if ($basix_options['page_title_style'] == 'bordered') { ?>
<div class="relative">
<!-- Page Title -->
<h1 class="bordered"><?php the_title(); ?></h1>
<?php // Get all portfolio categories
if (get_terms('portfolio_category')) {
$sorting_terms = get_terms('portfolio_category', array(
'orderby' => 'name',
'hide_empty' => TRUE,
'hierarchical' => FALSE

));
if ($sorting_terms) {
?>
<!-- Filtering -->
<div class="portfolio-filtering">
<ul id="portfolio-filters">
<li>
<span class="filter active" data-filter="all">Voir tout</span>
</li>
<?php foreach ($sorting_terms as $sorting_term) { ?>
<li>
<span class="filter" data-filter=".<?php echo $sorting_term->slug ?>"><?php echo $sorting_term->name ?></span>
</li><?php } ?>
</ul>
</div>
<?php
}
}
?>
</div>
<?php } ?>

<!-- Content -->
<?php the_content(); ?>

<!-- Portfolio Grid -->
<ul class="column-container" id="portfolio">
<?php $loop = new WP_Query(array('post_type' => 'portfolio', 'posts_per_page' => -1)); ?>
<?php while ($loop->have_posts()) {
$loop->the_post(); ?>
<?php $item_terms = get_the_terms($post->ID, 'portfolio_category'); ?>

<li class="column-one-third <?php if ($item_terms) {
foreach ($item_terms as $item_term) {
print $item_term->slug . ' ';
unset($item_term);
}
} ?> mix">
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if (has_post_thumbnail()) { ?>
<!-- Image -->
<div class="item-inner">
<div class="item-outer">
<a href="<?php esc_url(the_permalink()); ?>" class="link_image"><?php the_post_thumbnail('thumbnail'); ?></a>
</div>
</div>
<?php } ?>
<!-- Title -->
<h3><a href="<?php esc_url(the_permalink()); ?>" rel="bookmark"><?php the_title(); ?></a>
</h3>
<!-- Categories -->
<div class="categories">
<?php if ($item_terms) {
foreach ($item_terms as $item_term) {
print '<div class="category">' . $item_term->name . '</div>';
unset($item_term);
}
} else {
print __('Uncategorized', 'basix-td');
} ?>
</div>
</div>
</li>
<?php
}
wp_reset_query(); // End while & reset query
?>
</ul>

</div>
</div>

<?php get_footer();

?>


Qu'en penses tu ?
Merci encore
Re,

Essaye de remplacer la ligne suivante
$sorting_terms = get_terms('portfolio_category');

par
$sorting_terms = get_terms('portfolio_category', 'parent=0');

Je lance cette solution de mémoire sans avoir le temps d'y passer plus de temps, mais en tout cas c'est sûr que dans ton cas la solution se trouve dans le marqueur de modèle get_terms() (lien vers la doc)
Modifié par audrasjb (18 Sep 2014 - 00:04)
Bonjour,

J'ai exactement le même problème avec le thème GeneratePress.

Dans l'éditeur j'ai essayé de trouver "sorting_terms" mais je n'ai rien trouvé.

Quelle modification dois-je apporter et ou ?

Je débute sous WordPress, je ne maîtrise pas encore vraiment.

Merci d'avance pour votre aide.
Modifié par phil995511 (16 Dec 2014 - 22:40)
Bonjour phil995511 et bienvenue sur le forum Smiley smile

Ton problème ici, relève plutôt de l'apprentissage du système de templating WordPress. Et je me permets donc te te mettre en garde : si tu modifie ton thème, tu ne pourras plus le mettre à jour sans écraser tes modifications. Si tu souhaites poursuivre avec ce thème, il te faut donc créer un Thème enfant pour effectuer tes modifications.
> Thèmes enfants sur le codex WP
Ensuite, une fois ton thème enfant créé tu pourras effectuer tes modifications de façon sereine Smiley smile

Pour revenir à la question : sur quelle page/élément de ton site se situent les filtres à modifier : Homepage ? PAGE (au sens de WP) ? article ? liste d'articles ? archives ?
Il te faut identifier le gabarit pour faciliter l'identification du template PHP de ton thème qui doit être modifié.
> Pour identifier un fichier de template suivant sa fonction, utiliser ce diagramme (EN, fichier JPG)
As-tu une URL pour faciliter l'identification du template à modifier ? l'URL du thème a minima ?
Bonjour Andreas et merci pour ton aide Smiley smile

J'ai bien noté ton conseil à propos des thèmes parents/enfants et je t'en remercie. Il faut que je me documente à ce sujet. C'est une solution subtile que je ne manquerai pas d'utiliser en cas de besoin.

J'ai créé par le passé des paquets .msi pour le déploiement en entreprise sous Win x. Y aurait-il pour WordPress ou plus globalement pour les pages web en php, un outil qui permette de mettre en évidence les différences de code entre un thème parent et un thème enfant, tel que cela existe pour la création de .msi ?

Pour répondre à tes questions, je publie des articles que je place dans des catégories qui sont présentes dans mon menu principal. J'ai très peu de pages wp, une de contact et celles qui sont nécessaires au forum.

Mon soucis concerne toutes "pages" visibles : les articles et les pages wp, la barre de menu étant présente dans chacune d'entre elles.

J'ai une structure de type :

Une catégorie x, une y, une z. Dans le menu x est une des catégorie principale, y est une sous-catégorie de x et z est une sous-catégorie de x,y.

Quand je clique sur x j'obtiens tout les articles rattachés à x, quand je clique sur y j'obtiens ceux de la catégorie y, de même si je clique sur z. Il n'y a pas de filtres "en héritage".

J'aimerai que ça affiche pour y "x inter y" et pour z "x inter y inter z". (http://www.mathematiquesfaciles.com/forum/lire.php?num=15&msg=32587&titre=Inter+et+union)

En français j'aimerai que ça n'affiche pour y que ce qui ne concerne x+y, et pour z que ce qui concerne x+y+z.

Sur mon site z appartient à 2 catégories principales d’où les problèmes que je rencontre...

A quoi cela sert-il de créer des liens parents enfants dans articles/catégories ? Cela peut-il m'aider à résoudre mon problème ?

J'ai vu que je pouvais aussi afficher des mots clefs dans le menu. Comme jusqu'à présent je n'ai pas employé les mots clefs pour le référencement interne de mon site, cela pourrait me dépanner sur le cours terme en n'en attribuant uniquement à certains de mes articles pour les différencier d'autres et filtrer un peu... mais je crains que ce ne soit une solution quelque peu limitée et que sur le long terme cela me complique la vie plus qu'autre chose.

Si je pouvais ajouter des "droits d'affichage" dans mes article pour qu'ils ne soient visibles que dans les catégories que j'aurai choisi ça m'arrangerai...

Le thème que j'emploie est le suivant : https://wordpress.org/themes/generatepress

C'est quoi le gabarit ?

Je ne suis pas dans le coup... j'ai bien créé 2 mini sites en html il y a 15 ans environ en utilisant netscape et son éditeur, mais j'ai perdu la main et je n'ai jamais fait de php.

J'ai cru comprendre que je pouvais également insérer du code html au sein des pages php, c'est bien ça ?

Je suis sous linux, y a-t-il un éditeur spécifique pour le php ? ou vaut-il mieux passer par celui de word press en général ?

Avec quels outils peut-on créer et éditer des plugins ?

Le code php est-il compilable ?

Que me conseillerais-tu comme plugin pour la sécurité de mon site ?

Connais-tu un plugin re-captcha qui fonctionne avec wp (commentaires+login), bbpress et contact from 7 ?

Si non côté facilité on m'a conseillé ça : https://wordpress.org/plugins/list-category-posts/ mais je n'ai pas encore testé.

Merci par avance pour tes lumières.
Modifié par phil995511 (17 Dec 2014 - 21:50)
-Pour les outils de développement sous Linux j'ai trouvé ça :

http://doc.ubuntu-fr.org/programmation?s=programmer#html_xhtml c'est donc réglé.

-J'ai lu qu'il était possible de compiler le php mais que ce n'était pas désirable. Ce point est réglé aussi.

-Je vais me créer un thème enfant ce week car après avoir lu tes conseils et m'être un peu documenté, il me semble que ce soit indispensable.

-J'ai un plugin open source au quel j'aimerai enlever deux de ses trois fonctions qui rentrent en conflit avec mon thème mais je ne sais comment faire.

Pour le reste je galère encore...

Merci d'avance pour votre aide.