- Statut : non résolu
- Ce sujet contient 28 réponses, 4 participants et a été mis à jour pour la dernière fois par Lumiere de Lune, le il y a 8 années et 9 mois.
-
AuteurMessages
-
6 février 2016 à 16 h 36 min #559410
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 4.4.1
– Version de PHP/MySQL : 5.5.12 / 5.6.17
– Thème utilisé : Air Balloon – Child
– Thème URI : http://www.mon-coin-de-bourgogne.fr
– Extensions en place : Akismet (3.1.7), Autoptimize (2.0.0), Basic Google Maps Placemarks (1.10.5), Category Tag Pages (1.0), Cocorico Social (1.2.1), Conditional CAPTCHA (3.7.1), Contact Form 7 (4.3.1), Forum_wordpress_fr (4.0), Gwolle Guestbook (1.6.0), Links Shortcode (1.8.1), MMWW (1.0.6), PS Auto Sitemap (1.1.9), Really Simple CAPTCHA (1.8.0.1), Rocket Lazy Load (1.0.4), RSS Includes Pages (3.4), Slideshow (2.3.1), TinyMCE Advanced (4.2., WordPress Database Backup (2.3.0), WP-Optimize (1.8.9.10), Yoast SEO (2.3.5)
– Adresse du site : http://localhost/
– Nom de l’hébergeur : local avec WAMPContexte :
Mon site en ligne fonctionne avec des pages qui ont des catégories et des étiquettes, grâce au plugin Category Tag Pages. Afin de mieux coller au fonctionnement de WordPress, je prépare localement un transfert de ces pages vers un Custom Post Type.Problème(s) rencontré(s) :
J’ai donc créé mon CPT ‘Visites’ –> OK
J’ai créé une Taxonomie « Types de Visites » (slug = type) avec les termes Châteaux / Églises … –> OKJe voudrais afficher une « page » (un contenu) avec la liste de toutes les Visites, triées par « type de visites ».
J’ai créé un fichier taxonomy.php et même un fichier taxonomie-type.php.
J’ai suivi ce tuto : https://wpchannel.com/creer-page-archive-custom-taxonomies-wordpress/Mais rien à faire :fire: J’ai beau ré-enregistrer mes permaliens, modifier les réglages de Yoast SEO, j’arrive toujours sur une page 404 avec localhost/wptestbourg/type-de-visites
6 février 2016 à 16 h 43 min #1042997Il faudrait que tu nous donnes le code de génération des CPT. Et évidemment c’est taxonomy-truc.php 🙂
6 février 2016 à 17 h 39 min #1042998Oui, pardon, c’est bien taxonomy avec Y –> taxonomy-type.php
Voilà le code inséré dans un MU-plugin :
‘Visites’,
‘singular_name’ => ‘Visite’,
‘all_items’ => ‘Toutes les visites’,
‘add_new’ => ‘Ajouter une visite’,
‘add_new_item’ => ‘Ajouter une nouvelle visite’,
‘edit_item’ => ‘Editer une visite’,
‘new_item’ => ‘Nouvelle visite’,
‘view_item’ => ‘Voir la visite’,
‘search_items’ => ‘Rechercher une visite’,
‘not_found’ => ‘Aucune visite’,
‘not_found_in_trash’ => ‘Aucune visite dans la corbeille’,
‘menu_name’ => ‘Visites’
);
/* Creation du CPT Visites */
register_post_type(
‘visites’, /* slug */
array(
‘label’ => __(‘Visites’),
‘labels’ => $labels_visit,
‘public’ => true,
‘capability_type’ => ‘post’, /* indique si on se calque sur le modèle « Article » (post) ou « Page » (page) */
‘menu_position’ => 15,
‘menu_icon’ => ‘dashicons-location-alt’,
‘can_export’ => true,
‘taxonomies’ => array( ‘type’, ‘post_tag’ ),
‘has_archive’ => true,
‘hierarchical’ => false, /* Affiche la liste déroulante « Parent » pour les types calqués sur le modèle « Page ») */
‘supports’ => array(‘title’, ‘editor’, ‘thumbnail’, ‘excerpt’, ‘custom-fields’, ‘comments’, ‘revisions’)
));
// Creation des Custom Taxonomies « Types de Visite »
register_taxonomy(
‘type’,
‘visites’,
array(
‘label’ => ‘Types de Visites’,
‘labels’ => array(
‘name’ => ‘Types de Visites’,
‘singular_name’ => ‘Type de Visite’,
‘all_items’ => ‘Tous les types’,
‘edit_item’ => ‘Éditer le type’,
‘view_item’ => ‘Voir le type’,
‘update_item’ => ‘Mettre à jour le type’,
‘add_new_item’ => ‘Ajouter un type de visite’,
‘new_item_name’ => ‘Nouveau type’,
‘search_items’ => ‘Rechercher parmi les types’,
‘popular_items’ => ‘Types les plus utilisés’
),
‘rewrite’ => array(‘slug’ => ‘type-de-visites’),
‘hierarchical’ => true
)
);
register_taxonomy_for_object_type( ‘type’, ‘visites’ );
}J’ai créé une 1ère « Visite » et j’arrive à l’afficher. Je lui ai affecté le type de visite « chateaux ». J’obtiens aussi l’affichage du type (de visites) « châteaux » avec cette URL : localhost/wptestbourg/type-de-visites/visites-de-chateaux/
Je viens de créer vite fait une autre visite, avec cette fois le type « visites d’églises » –> j’obtiens bien l’URL localhost/wptestbourg/type-de-visites/visites-des-eglises/
Pourquoi l’URL localhost/wptestbourg/type-de-visites/ ne donne rien ? Je voudrais pouvoir y classer les visites par Type, comme le propose l’article de WP Channel.
6 février 2016 à 22 h 24 min #1042999Essaye
‘rewrite’ => array( ‘slug’ => ‘type-de-visites’, ‘with_front’ => true )
Je te mets une série de liens en vrac qui pare de ce genre d’url rewriting. Je ne suis pas sur que tous te servent, mais je n’ai pas trop le temps de les trier 😳
Evite de commencer ce soir, ça fait mal à la tête 😆
http://wordpress.stackexchange.com/questions/101316/custom-post-type-with-two-hierarchical-custom-taxonomies-strategy-to-generate-b
http://wordpress.stackexchange.com/questions/5308/custom-post-types-taxonomies-and-permalinks?answertab=active#tab-top
http://wordpress.stackexchange.com/questions/39500/how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-typesJe t’en garde sous le coude qui piquent un peu plus 😐
6 février 2016 à 22 h 58 min #1043000Merci Didier07, je regarderai ça demain au calme.
Mais si si tu avais des liens « in french », je préfèrerai, car mes compétences en WordPress sont évolutives mais limitées par l’anglais (trop) technique 😕7 février 2016 à 8 h 59 min #1043001Si j’avais des liens en français je te les aurai mis, malheureusement je n’ai rien en magasin 🙂
7 février 2016 à 10 h 37 min #1043002Alors, j’ai à peu près tout lu, et même si je n’ai pas tout compris, ça ne répond pas à ma demande.
J’ai dû mal m’expliquer … Mon problème, ce n’est pas les URL, c’est de pouvoir trier et afficher sur une même page mes CPT, en les classant par Custom CatégoryEn fait, il y a un template et une URL qui répondent partiellement à ma demande : le template archive-visites (où visites est le slug du CPT) et qui s’affiche avec l’URL mon-site/visites c’est parfait.
J’arrive à y afficher la liste des CPT classés par ordre alphabétique, mais je voudrais les grouper par Custom taxonomy : les châteaux / les églises / les villes …Voilà mon fichier archive-visites.php (qui appelle content-visites.php, à voir en-dessous) :
<div id="wrap" class="clearfix">
<section id="content" class="primary" role="main">
<h1 id="category-title" class="archive-title">
Les Visites
</h1>
<p>Prévoir ici une présentation des visites</p>
<div class="clearfix les-visites">
<div>
<div class="page-cat clearfix"><a href=" »></a></div>
</div>
</div>
</section>
</div>Ce qui me donne comme résultat la liste suivante :
– Château de Cormatin
– Chapaize (qui est une église)
– Berzé-le-ChatelAlors que je voudrais comme résultats :
* Les châteaux (1er terme de la Custom Taxo)
– Berzé-le-chatel
– Château de Cormatin
(et autres châteaux)* Les églises (2ème terme de la Custom Taxo)
– Chapaize
– (et autres églises par la suite)7 février 2016 à 11 h 05 min #1043003Je te dirais qu’il fat le faire en 2 temps avec la structure suivante
1- Recherche des valeurs de ta taxonomie (get_terms devrait te faire le travail)
$terms = get_terms( …. )2- Boucle sur les valeurs recupérées
foreach( $terms as $term )
$posts = new WP_Query( array(‘post_type’=>…, tax_query => array( array( ‘term’ => ‘ma valeur’ )))
(ou query_posts éventuellement)
Ta loop sur les posts récupérés
/foreach7 février 2016 à 16 h 06 min #1043004Merci 🙂 Cette fois, je sens que c’est ça.
Par contre, j’ai besoin d’un peu plus d’aide, je ne suis pas codeuse 😇La fonction get_terms ne présente pas d’exemples dans le Codex.
Je n’arrive même pas à afficher la liste des différents termes de taxonomy, rien qu’avec ça :
<?php
$terms = get_terms(‘type’, array( ‘hide_empty’ => 0 ))
echo ‘- ‘;
- ‘ . $term->name . ‘
foreach ( $terms as $term ) {
echo ‘‘;
}
echo ‘‘;
?>7 février 2016 à 16 h 50 min #1043005Ta taxonomy c’est « type-de-visite », pas seulement « type », mais c’est bien ça. Tu traites bien le tableau d’objets que te retourne get_terms
7 février 2016 à 16 h 54 min #1043006Je progresse (grâce à cet article) : j’ai réussi à afficher ma liste de « termes » :
<?php
$results = get_terms(‘type’);
if ($results) {
foreach ($results as $result) {
echo ‘‘ . $result->name. ‘
‘;
}
}
?>Et j’obtiens bien :
Visites d’Eglises
Visites de ChâteauxDonc, c’est bon pour le point 1
Maintenant, comment insérer ma boucle ?
7 février 2016 à 19 h 53 min #1043007Voilà ce que j’ai essayé :
<div class="clearfix les-visites">
<div>
<?php
$results = get_terms('type');
if ($results) {
foreach ($results as $result) {
echo '<h2>‘ . $result->name . ‘</h2>‘;
query_posts( array (
‘post_type’ => ‘visites’,
‘taxonomy’ => $result,
‘posts_per_page’ => -1
) );
while (have_posts()) : the_post(); ?>
<div class="page-cat clearfix"><a href=" »></a></div>
</div>
</div>… sauf que ça m’affiche toute la liste de mes CPT pour chaque Taxonmy, au lieu de ne mettre que les CPT rattachés à cette taxo précise.
Comment n’avoir que les CPT rattachés à chaque catégorie, l’une après l’autre ?
7 février 2016 à 20 h 19 min #1043008Je te laisse adapté le code ci-dessous 😉
$query_args= array(
‘post_type’ => ‘mon-post-type’
,’tax_query’ => array(
array(
‘taxonomy’ => ‘slug-taxonomy’
,’field’ => ‘id’
,’terms’ => ‘ma-valeur’,
)
, ‘posts_per_page’ => -1
, ‘orderby’ => ‘ASC’
));7 février 2016 à 22 h 21 min #1043009Çà ne fonctionne pas, je récupère juste le titre de ma page dans chaque taxonomy :
Visites d’Églises
Essai affichage CPT par catégories
Visites de Châteaux
Essai affichage CPT par catégoriesJe ne savais pas ce qu’il fallait mettre pour ‘terms’ => ‘ma-valeur’, puisque j’ai plusieurs termes dans ma taxonomy.
J’ai essayé avec le slug d’un des termes, j’ai essayé avec $result (ma valeur ?), et j’ai essayé en supprimant cette ligne, mais j’ai toujours le même résultat.Pour mémoire, voici le code complet :
<div class="clearfix les-visites">
<div>
<?php
$results = get_terms('type');
if ($results) {
foreach ($results as $result) {
echo '<h2>‘ . $result->name . ‘</h2>‘;
$query_args= array(
‘post_type’ => ‘visites’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘type’,
‘field’ => ‘id’,
‘terms’ => $result,
)
, ‘posts_per_page’ => -1
, ‘orderby’ => ‘ASC’
));
while (have_posts()) : the_post(); ?>
<div class="page-cat clearfix"><a href=" »></a></div>
</div>
</div>8 février 2016 à 4 h 09 min #1043010A premiere vue, mais je ne suis pas très réveillé 🙂
‘field’ => ‘id’,
Tu recherches les posts part ID du terme
‘terms’ => $result->term_id, -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.