CPT filtrer avec des Tags (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 24)
  • Auteur
    Messages
  • #545339
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Ma configuration WP actuelle
    – Version de WordPress :
    – Version de PHP/MySQL :
    – Thème utilisé : Refinery
    – Extensions en place : Clean UP
    – Nom de l’hebergeur :
    – Adresse du site : En local

    Bonjour,

    Dans le CPT -> Portfolio, j’ai ajouté le type de Projet.

    Avec ce bout de code dans le fichier functions.php

    register_taxonomy(
      ‘projet’,
      ‘portfolio’,
      array(
        ‘label’ => ‘Projets’,
        ‘labels’ => array(
        ‘name’ => ‘Projets’,
        ‘singular_name’ => ‘Projet’,
        ‘all_items’ => ‘Tous les projets’,
        ‘edit_item’ => ‘Éditer le Projets’,
        ‘view_item’ => ‘Voir le projet’,
        ‘update_item’ => ‘Mettre à jour le projet’,
        ‘add_new_item’ => ‘Ajouter un projet’,
        ‘new_item_name’ => ‘Nouveau projets’,
        ‘search_items’ => ‘Rechercher parmi les projets’,
        ‘popular_items’ => ‘Projet les plus utilisées’
      ),
      ‘hierarchical’ => false
      )
    );
    register_taxonomy_for_object_type( ‘projet’, ‘portfolio’ );

    Jusque là c’est OK!

    Maintenant j’aimerais si c’est possible, filtrer par:

    1. projet -> ouistiti
    2. projet -> chouette
    etc….

    J?ai ce bout de code qui appelle toutes mes images du portfolio

    <section id="portfolio">
    <div class="one_full">
    <div class="picto-coffe"></div>
        <?php $modules = get_option( 'refinery_modules' ); ?>
        <h6 class="textcenter"><?php esc_attr_e( $modules['portfolio_title'] ); ?></h6>
    	<ul class="nolist textcenter aligncenter">
    		<?php 
    		     $portfolio = new WP_Query( array( 'order' => ‘DESC’, ‘post_type’ => ‘portfolio’, ‘posts_per_page’ => -1 ) );
    		     if ( $portfolio->have_posts() ) : while( $portfolio->have_posts() ) : $portfolio->the_post();
    		          $featured_image = wp_get_attachment_image_src( get_post_thumbnail_id(), ‘portfolio’); 
    		 ?>
        		 <?php if ( $featured_image[0] ) : ?>
                    <li class="animated bounceIn">
                        <a href="<?php the_permalink(); ?>” title=”<?php _e("View", "refinery"); ?>“>
        	               <img class="zoomy" src="<?php echo $featured_image[0]; ?>” alt=”<?php the_title(); ?>” />
        	               <span class="magnify">+</span>
                        </a>
                    </li>
                 <?php endif; ?>
    		<?php endwhile; endif; ?>
    	</ul>
    	</div>
    </section>

    J’ai essayé plusieurs solution trouvée sur le web, tel que d’ajouter cette ligne de code dans la boucle

    <?php the_terms( $post->ID, ‘projet, ‘Projets : ‘ ); ?>

    Je deviens un peu dada car il y a vraiment quelque chose qui m’échappe et à force d’avoir le nez dans le guidon, je n’y vois plus rien.

    J’ai aussi créer un fichier taxonomy-projet.php

    Réf:http://wordpress.bbxdesign.com/custom-post-type-custom-taxonomy

    Si une personne a une piste, je prends sans tarder. Autrement, je vais tout planter …. :D

    #987324
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Oups désolée après relecture du copier coller, je m’aperçois des erreurs telles que :Éditer le Projet (sans s) idem pour Nouveau projet et Projet les plus utilisés (au masculin)

    Bref! ceci n’engendre pas la solution à mon problème 😋

    #987325
    didier07
    Participant
    Maître WordPress
    1965 contributions

    Le :codex: est ton ami 🙂 et surtout LE MUST, la page sur les template hierarchy

    taxonomy-$taxonomy-$term.php devrai faire ton bonheur 🙂

    #987326
    didier07
    Participant
    Maître WordPress
    1965 contributions
    #987327
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Oki – Oki!!

    Si tu savais le nombre de pages que j’ai écumé, n’est-ce que pour comprendre un minimum, ce que je suis entrain de faire :hs:

    taxonomy-$taxonomy-$term.php devrai faire ton bonheur :)

    Je vais regarder, ceci, demain, la tête reposée, car en ce moment je ne sais m^me plus comment je m’appelle

    Merci beaucoup pour cette piste.

    #987328
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions
    didier07 wrote:
    J’ai retrouvé
    http://codex.wordpress.org/images/9/96/ … rarchy.jpg.
    👏

    C’est marrant, j’ai l’impression qu’il faut regarder et lire de droite à gauche … 😉 Non??

    En ce qui me concerne, j’ai trouvé via le codex avec tes bons conseils ceci:
    http://codex.wordpress.org/Function_Reference/wp_insert_term

    A suivre …

    #987329
    didier07
    Participant
    Maître WordPress
    1965 contributions
    ouistiti.net wrote:
    C’est marrant, j’ai l’impression qu’il faut regarder et lire de droite à gauche … 😉 Non??

    Non, il parcourt le diagramme de gauche à droite et prend la premier template qu’il trouve 🙂
    Avec juste index.php et style.css, un theme est valide, mais la mise en page sera pareil pour tous les contenus dans ce cas là 🙂

    #987330
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Bonsoir

    Ce soir je n’ai pas mis mon nez dans le code, mais j’ai essayé de comprendre. Du coup j’ai des questions à vous poser.

    Voici le code du template que j’utilise (à titre indicatif)

    // portfolio
    	register_post_type( ‘Portfolio’,
    		array(
    			‘labels’ 		=> array(
    			‘name’ 			=> __( ‘Portfolio’, ‘refinery’ ),
    			‘singular_name’ => __( ‘Portfolio’, ‘refinery’ ),
    			‘add_new’ 		=> __( ‘Add New Project’, ‘refinery’ ),
    			‘add_new_item’ 	=> __( ‘Add New Project’, ‘refinery’ ),
    			‘edit’ 			=> __( ‘Edit’, ‘refinery’ ),
    			‘edit_item’ 	=> __( ‘Edit Project’, ‘refinery’ ),
    			‘view’ 			=> __( ‘View’, ‘refinery’ ),
    			‘view_item’ 	=> __( ‘View Project’, ‘refinery’ ),
    		),
    			‘public’ 		=> true,
    			‘supports’ 		=> array( ‘title’, ‘editor’, ‘thumbnail’, ‘author’ ),
    		)
    	);
    
    // portfolio filters: utilisé pour filtre 
    function refinery_filter_init() 
    {
    	// initialize taxonomy labels
        $labels = array(
            ‘name’              => _x( ‘Filters’, ‘taxonomy general name’, ‘refinery’ ),
            ‘singular_name’     => _x( ‘Filter’, ‘taxonomy singular name’, ‘refinery’ ),
            ‘search_items’      => __( ‘Search Types’, ‘refinery’ ),
            ‘all_items’         => __( ‘All Filters’, ‘refinery’ ),
            ‘parent_item’       => __( ‘Parent Filter’, ‘refinery’ ),
            ‘parent_item_colon’ => __( ‘Parent Filter:’, ‘refinery’ ),
            ‘edit_item’         => __( ‘Edit Filters’, ‘refinery’ ),
            ‘update_item’       => __( ‘Update Filter’, ‘refinery’ ),
            ‘add_new_item’      => __( ‘Add New Filter’, ‘refinery’ ),
            ‘new_item_name’     => __( ‘New Filter Name’, ‘refinery’ ),
        );
        // taxonomy for filters
        register_taxonomy(
            ‘filter’, 
            
            array(‘portfolio’), 
                array(
                    ‘hierarchical’ => true,
                    ‘labels’       => $labels,
                    ‘show_ui’      => true,
                    ‘query_var’    => true,
                    ‘rewrite’      => array( 
                    ‘slug’         => ‘filter’ 
                    ),
                )
            );
    }
    add_action( ‘init’, ‘refinery_filter_init’ );

    Oui je sais c’est un peu long 😗

    Question :

    N1. Ne suffirait-il pas de créer simplement les fichiers tels que:
    – taxonomy-portfolio-web.php
    – taxonomy-portfolio-logo.php

    N2. Ou est-ce que je dois ajouter dans le fichier functions.php enregistre chaque fois une nouvelle cat et taxonomy?

    ‘logo’,
      ‘portfolio’,
      array(
        ‘label’  => ‘Logos’,
        ‘labels’ => array(
        ‘name’   => ‘Logos’,
        ‘singular_name’ => ‘Logo’,
        ‘all_items’     => ‘Tous les logos’,
        ‘edit_item’     => ‘Éditer le logo’,
        ‘view_item’     => ‘Voir le logo’,
        ‘update_item’   => ‘Mettre à jour le logo’,
        ‘add_new_item’  => ‘Ajouter un logo’,
        ‘new_item_name’ => ‘Nouveau logo’,
        ‘search_items’  => ‘Rechercher parmi les logos’,
        ‘popular_items’ => ‘Logos les plus utilisés’
      ),
      ‘hierarchical’ => false
      )
    );
    register_taxonomy_for_object_type( ‘logo’, ‘portfolio’ );
     la  (les catégories) afin de créer une nouvelle taxonomy:

    Et de créer un fichier:
    – taxonomy-Logo.php

    La question est: Solution 1 ou 2 (ce qui est faisable …) ??

    N3. une fois qu’on est sur la page single-portfolio est il possible de détecter la taxo en cours?

    N4. Si oui est-il possible d’appeler le template correspondant (exemple: http://www.NomduSite.com/portfolio-logo)->taxonomy-portfolio-logo.php.?

    N5. pour compliquer l’exercice, ce serait top de l’inclure dans la page single-portfolio.php

    J’espère que c’est claire comme de l’eau roche :D J’aimerai juste savoir si c’est possible ou non, avant de me lancer complètement dans cette aventure.

    Merci d’avance

    #987331
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions

    Je ne suis pas certaine pour les questions N3-N4-N5 la réponse est ici:
    http://codex.wordpress.org/Function_Reference/wp_insert_term

    #987332
    didier07
    Participant
    Maître WordPress
    1965 contributions

    trop tard ce soir pour moi. J’ai plus les yeux pour me mettre dedans 🙂

    #987333
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions
    didier07 wrote:
    trop tard ce soir pour moi. J’ai plus les yeux pour me mettre dedans 🙂

    Pas de souci …😉 ça n’est pas urgent ….

    J’ai trouvé ce tuto: boiteaweb.fr/taxonomies-termes-tutoriel-ultime-8152.html.
    Mais j’ai un peu peur de me perdre dans les méandres des tuoriels …

    #987334
    didier07
    Participant
    Maître WordPress
    1965 contributions

    A mon avis, la solution 1 te suffit, car :
    – la taxonomie est portfolio
    – les terms sont logos / web / ….

    Par contre tes urls devront etre plus du style http://www.NomduSite.com/portfolio/logo ou http://www.NomduSite.com/portfolio/web
    La dessus tu vas :lol:…. jaune :fire:, car il faut redéfinir tes fonctions rewrite et ta taxonomie pour arriver à ce que WordPress “accepte” de faire ses liens. Dans l’url vacancesardechoises.fr/type-de-loisir/course-a-pied tu as loisirs qui est la CPT, type-de-loisir qui est la taxonomie, course-a-pied la catégorie (le term dans le vocabulaire WP)

    Il y a des liens très bon en anglais sur http://wordpress.stackexchange.com en cherchant “custom-post-types taxonomies permalinks” en gros. Je n’ai plus les liens sous la main

    Didier

    #987335
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions
    didier07 wrote:
    – la taxonomie est portfolio
    – les terms sont logos / web / ….
    course-a-pied la catégorie (le term dans le vocabulaire WP).

    Il me semblait bien que je me trompais vis-à-vis du vocabulaire WP, (sans y ajouter les tags) je n’arrivais plus à faire la différence …

    Avec un peu d’huile de coude, j’espère réussir à faire des prouesses …

    Merci didier07 d’avoir pris le temps de me répondre.

    #987336
    didier07
    Participant
    Maître WordPress
    1965 contributions
    ouistiti.net wrote:
    Merci didier07 d’avoir pris le temps de me répondre.

    De rien 🙂

    Tu as une hiérarchie :
    [c]
    Custom Post type => Category => Term
    ||
    ======> Tag => Term[/c]

    Categorie et Tag sont la meme chose, sauf que les categories peuvent avoir un hiérarchie, pas les tags

    ouistiti.net wrote:
    Avec un peu d’huile de coude, j’espère réussir à faire des prouesses …

    Quand on rentre dedans c’est passionnant 🙂 mais prise de tete :fire: !!

    #987337
    ouistiti.net
    Participant
    Maître WordPress
    1879 contributions
    didier07 wrote:
    La dessus tu vas 😆 …. jaune :fire:, car il faut redéfinir tes fonctions rewrite et ta taxonomie pour arriver à ce que WordPress “accepte” de faire ses liens.

    ça doit-être ce bout de code:

    // rewrites custom post type name
    global $wp_rewrite;
    $projects_structure = ‘/projects/%year%/%monthnum%/%day%/%projects%/’;
    $wp_rewrite->add_rewrite_tag(“%projects%”, ‘([^/]+)’, “project=”);
    $wp_rewrite->add_permastruct(‘projects’, $projects_structure, false);

    Réf: http://wordpress.stackexchange.com/questions/53298/custom-post-type-url-rewriting/53305#53305

    Je vais tester les joies du code ce week-end :D

15 sujets de 1 à 15 (sur un total de 24)
  • Vous devez être connecté pour répondre à ce sujet.