web-dev-qa-db-fra.com

Comment créer des filtres pour les types de publication personnalisés?

Désolé, la question n'a peut-être pas de sens. J'ai essentiellement un type de publication personnalisé appelé "Projets" et je dois créer un moyen de filtrer les attributs du projet tels que "nom", "type", etc.

Par exemple, si j'ai un type de projet appelé avion et un autre type de projet appelé avion. Je voudrais pouvoir rechercher tous les projets portant le nom avion et les afficher dans la boucle.

J'ai examiné les taxonomies, mais je ne sais pas comment les utiliser efficacement.

Merci

1
Jeff

Voici comment je l'ai fait. Si vous avez votre type de message personnalisé comme "projets", et votre catégorie comme "avion".

Si vous n'envisagez pas d'utiliser la boucle de pré-construction, créez-en une autre appelée loop-projects.php. Cependant, ce n'est pas nécessaire.

               <?php
                $args = array(
                    'numberposts'    => 5,
                    'post_type'      => 'projects',
                    'category_name'  => 'airplane');
                query_posts( $args );
                get_template_part( 'loop', 'projects' );
                wp_reset_query();
              ?>
1
Zach Shallbetter

Si je comprends bien votre description, la structure est la suivante:

  • custom post type Project ;
  • Le type est taxonomy associé à Projet CPT;
  • avion est term dans Type taxonomy.

Dans la version actuelle de WP, vous pouvez effectuer une requête similaire (mais sera modifiée dans WP 3.1):

query_posts( array( 'post_type' => 'project','type' => 'airplane' ) );

Voir Paramètres de taxonomie dans le Codex.

1
Rarst

Aussi simple que cela:

// default filter:  
apply_filters( 'your_filter_name', $val_to_filter );  
// or, make it more specific:   
apply_filters( 'your_filter_name_'.$val_to_filter, $val_to_filter );

Vous pouvez ajouter ceci quelque part avant votre appel à register_post_type, afin qu'il ressemble à ceci:

// assuming, you got an $args array to make it easy to handle:  
$args['name'] = apply_filters('your_name_filter', $args['name'] );  
$args['name'] = apply_filters('your_name_filter_'.$args['name'], $args['name']);  
$args['type'] = apply_filters('your_type_filter', $args['type']);  
$args['type'] = apply_filters('your_type_filter_'.$args['type'], $args['type']);    
$name = $args['name'];    
unset($args['name']);  
register_post_type( $name, $args );
0
kaiser