Demande de type de publication personnalisé?
3 réponses
- votes
-
- 2011-01-06
query_posts( array( 'post_type' => array('post', 'portfolio') ) );
quimontre à lafois les articlesnormauxet les articles dans letype
portfolio
ou
query_posts('post_type=portfolio');
uniquementpour le
portfolio
.Utilisez comme requête WPnormale - lisez le Codex: http://codex.wordpress.org/Function_Reference/query_posts # Usage et http://codex.wordpress.org/Function_Reference/query_posts#Post_.26_Page_Parameters
<?php query_posts(array( 'post_type' => 'portfolio', 'showposts' => 10 ) ); ?> <?php while (have_posts()) : the_post(); ?> <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <p><?php echo get_the_excerpt(); ?></p> <?php endwhile;?>
query_posts( array( 'post_type' => array('post', 'portfolio') ) );
which shows both normal posts and posts inside
portfolio
typeor
query_posts('post_type=portfolio');
for only
portfolio
.Use as normal WP Query - read the Codex: http://codex.wordpress.org/Function_Reference/query_posts#Usage and http://codex.wordpress.org/Function_Reference/query_posts#Post_.26_Page_Parameters
<?php query_posts(array( 'post_type' => 'portfolio', 'showposts' => 10 ) ); ?> <?php while (have_posts()) : the_post(); ?> <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <p><?php echo get_the_excerpt(); ?></p> <?php endwhile;?>
-
C'est une réponse assez ancienne -maispour être clair,iln'y apas lafaçon dont vous devriez lefaire.Celaentraînerapresqueinévitablement des 404et unefoule d'autresproblèmes.Veuillez consulter les réponses de @ kaiser ou [cet articleexpliquantpourquoi vousne devriezpas utiliser `query_posts ()`] (http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-et-pre-get-posts/50762 # 50762)This is a fairly old answer - but to be clear, there is not the way you should being doing this. It will almost inevitably lead to 404s and a host of other problems. Please see @kaiser's answers or [this post on why you shouldn't use `query_posts()`](http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts/50762#50762)
- 7
- 2013-05-28
- Stephen Harris
-
- 2013-05-27
La réponsetardive comme réponseprincipale utilise
query_posts()
,ce quine devrait jamais êtrefait.Utiliser unfiltre
Utilisez lefiltre
pre_get_posts
et définissez simplement letype depublicationportfolio
pour la requêteprincipale. Utilisez des balises conditionnelles pour déterminer où vous voulez avoir cefiltre.Exemple rapide
<?php defined( 'ABSPATH' ) OR exit; /* Plugin Name: (#6417) "Portfolio" post type in query */ add_filter( 'pre_get_posts', 'wpse_6417_portfolio_posts' ); function wpse_6417_portfolio_posts( $query ) { if ( ! $query->is_main_query() // Here we can check for all Conditional Tags OR ! $query->is_archive() // For e.g.: Every archive will feature both post types ) return $query; $query->set( 'post_type', array( 'post', 'portfolio' ) ); return $query; }
Clause denon-responsabilité
Le code ci-dessusest unplugin,maispeut simplement êtreinséré dans lefichier
functions.php
de votrethème (ce quin'est pas recommandé).Late answer as the main answer uses
query_posts()
, which should never be done.Use a filter
Use the
pre_get_posts
filter and just set theportfolio
post type for the main query. Use Conditional Tags to determine where you want to have this filter.Quick Example
<?php defined( 'ABSPATH' ) OR exit; /* Plugin Name: (#6417) "Portfolio" post type in query */ add_filter( 'pre_get_posts', 'wpse_6417_portfolio_posts' ); function wpse_6417_portfolio_posts( $query ) { if ( ! $query->is_main_query() // Here we can check for all Conditional Tags OR ! $query->is_archive() // For e.g.: Every archive will feature both post types ) return $query; $query->set( 'post_type', array( 'post', 'portfolio' ) ); return $query; }
Disclaimer
The above code is a plugin, but can simply get stuffed in the
functions.php
file of your theme (which is not recommended).-
pourquoin'est-ilpas recommandé de l'ajouter auxfonctions?Sûrement,si l'administrateur du site change dethème,il devra detoutefaçonindiquer comment afficher leportefeuille sur lapage d'accueil avec cenouveauthème.Donc,je dirais qu'ilesttout aussi valable d'ajouter cela dans desfonctionsplutôt que dans unplugin.Ouest-ce queje manque quelque chose?why is it not recommended to add it to functions? Surely, if the site admin changes the theme they would need to address how to display the portfolio on the home page with this new theme anyway. So, I would say it is just as valid to add this in functions rather than a plugin. Or am I missing something?
- 0
- 2016-11-29
- Phill Healey
-
@PhillHealey Comme vous l'avez dit,les données seraientinvisibleset vous auriez à copieret coller le code autour.Lesmodifications lourdeset logiques des requêtes sontmieux servies via desplugins,tandis que l'affichageet le style doivent être conservés dans lesthèmes.@PhillHealey As you said, the data would be invisible and you would have to copy and paste the code around. Heavy, logic modifications to queries are best served via plugins, while displaying and styling should be kept in themes.
- 0
- 2016-11-29
- kaiser
-
Pas si ce codeest spécifique authème.Not if that code is specific to the theme.
- 0
- 2016-12-03
- Phill Healey
-
@PhillHealey Untype demessagene doit **jamais ** être spécifique à unthème.@PhillHealey A post type should **never** be specific to a theme.
- 0
- 2016-12-04
- kaiser
-
Ok,si vous voulez vousmettre àplat sur les absolus alorstrèsbien.Cependant,iln'esttout simplementpas correct de dire qu'aucun code spécifique à la conceptionne doit êtrepoussé vers unplugin.Il arrive souvent que cene soitpas approprié.Ok, if you want to get in some tit-for-tat over absolutes then fine. However, It's just not correct to say that none design specific code should be pushed out to a plugin. There are lots of times when that's not appropriate.
- 0
- 2016-12-05
- Phill Healey
-
- 2013-12-11
Ajoutez ce code à votre fichier defonctions dethèmesenfants (recommandé)pour ajouter vospages CPT uniques à votreboucleprincipale
add_action( 'pre_get_posts', 'add_custom_post_types_to_loop' ); function add_custom_post_types_to_loop( $query ) { if ( is_home() && $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'portfolio' ) ); return $query; }
Source http://codex.wordpress.org/Post_Types
Ou créez unmodèle depage archive-portfolio.php personnalisé quin'affichera que vospages CPT. Celane doit êtrefait que si vousn'avezpas ajouté depage d'archive à l'aide desparamètres duplugin.
Exemple: 'has_archive'=>true,
Vouspouvez également contrôler lenombre depages affichéeset l'ordre dans lequelelles s'affichent sur lapage d'archive à l'aide de ce code:
add_action( 'pre_get_posts', 'cpt_items' ); function cpt_items( $query ) { if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'portfolio' ) ) { $query->set( 'posts_per_page', '8' ); $query->set( 'order', 'ASC' ); } }
Add this code to your child themes functions file (recommended) to add your single CPT pages to your main loop
add_action( 'pre_get_posts', 'add_custom_post_types_to_loop' ); function add_custom_post_types_to_loop( $query ) { if ( is_home() && $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'portfolio' ) ); return $query; }
Source http://codex.wordpress.org/Post_Types
Or create a custom archive-portfolio.php page template which will only display your CPT pages. This only needs to be done if you haven't added a archive page using the plugin settings.
Example: 'has_archive' => true,
You can also control how many pages are displayed and the order in which they're displayed on the archive page using this code:
add_action( 'pre_get_posts', 'cpt_items' ); function cpt_items( $query ) { if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'portfolio' ) ) { $query->set( 'posts_per_page', '8' ); $query->set( 'order', 'ASC' ); } }
J'aiinstallé le plugin d'interface utilisateur detype demessagepersonnalisé .Après l'activation de ceplugin,j'ai créé untype depublicationpersonnalisé appelé
portfolio
.Maintenant,je veux utiliser cela sur lapage duportefeuille dans lefront-end.Comment récupérer tous les articles detypepersonnaliséportfolio
?