Types de publication personnalisés sur les pages de catégorie
-
-
J'ai une solution. Votremodèle detaxonomiepersonnalisé s'appelleraittaxonomy- {taxonomy} .php.Parexemple,si votretaxonomie s'appelait "cooking-categories",vousnommeriez votrefichiertaxonomy-cooking-categories.php.I got a solution Your custom taxonomy template would be named taxonomy-{taxonomy}.php. For example, if your taxonomy was called "cooking-categories" you would name your file taxonomy-cooking-categories.php.
- 0
- 2019-04-04
- Kiran Kumar Kadavakollu
-
4 réponses
- votes
-
- 2011-02-22
Pour lestypes depublicationpersonnalisés avec unetaxonomiepersonnalisée,vouspouvez créer unmodèlepour cettetaxonomie.Votremodèle detaxonomiepersonnalisé s'appellerait
taxonomy-{taxonomy}.php
.Parexemple,si votretaxonomie s'appelait "cooking-categories",vousnommeriez votrefichiertaxonomy-cooking-categories.php
.Voustrouverezplus d'informations sur lesfichiersmodèlespour les archives detaxonomie spéciale dans le codexici: http://codex.wordpress.org/Template_Hierarchy # Custom_Taxonomies_display
For custom post types with custom taxonomy you can make a template for that taxonomy. Your custom taxonomy template would be named
taxonomy-{taxonomy}.php
. For example, if your taxonomy was called "cooking-categories" you would name your filetaxonomy-cooking-categories.php
.More information on template files for special taxonomy archives can be found in the codex here: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display
-
- 2011-02-22
Vouspouvezen fonction dutype demessage comme ceci: disons que vous avez
category.php
pour lesmessages réguliersetyour-custom-type-category.php
pour vosmessages detype depublicationpersonnalisé,puis ajoutez-le simplement à votre category.php habituel àtouten haut.<?php if (have_posts()){ the_post(); if( 'your_custom_type' == get_post_type( $post ) ) { rewind_posts(); get_template_part('your-custom-type-category'); exit(); } rewind_posts(); } ?>
et maintenant,chaquefois qu'une catégorieest demandée,il vérifiera votretype demessagepersonnaliséet s'ilesttrouvé,il utilisera votre
your-custom-type-category.php
commemodèleet tous lesmessages réguliers s'afficheronten utilisantcategory.php
sans changement.J'espère que cela vous aidera
You can based on the post type like so: say you have
category.php
for regular posts andyour-custom-type-category.php
for your custom post type posts then just add this to your regular category.php at the very top.<?php if (have_posts()){ the_post(); if( 'your_custom_type' == get_post_type( $post ) ) { rewind_posts(); get_template_part('your-custom-type-category'); exit(); } rewind_posts(); } ?>
and now when ever a category is requested it will check for your custom post type and if found it will use your
your-custom-type-category.php
as template and all regular posts will display usingcategory.php
with no change.Hope this helps
-
- 2011-02-23
Bonjour @Kelvin Jayanoris:
Y a-t-il une raisonpour laquelle vousne pouvezpas simplementtester la valeur de
$post->post_type
avec uneinstructionif..elseif
dans votre Boucle ,comme ceci:<?php if ($post->post_type=='foo'): ?> Put HTML for 'foo' post type here... <?php else if ($post->post_type=='bar'): ?> Put HTML for 'bar' post type here... <?php else if ($post->post_type=='post'): ?> Put HTML for 'post' post type here... <?php endif; ?>
Ou s'il y a une raisonpour laquelle vousne pouvezpas créer votrepropre hiérarchie denom defichier demodèle sous laforme denoms defichiers comme
post-foo.php
,post-foo.php
,post-post.php
,également dans votreboucle? Celui-ci comme du codepourrait lefairepour cela:<?php include("post-{$post->post_type}.php"); ?>
Hi @Kelvin Jayanoris:
Is there a reason why you can't just test for the value of
$post->post_type
with anif..elseif
statement within your Loop, like this:<?php if ($post->post_type=='foo'): ?> Put HTML for 'foo' post type here... <?php else if ($post->post_type=='bar'): ?> Put HTML for 'bar' post type here... <?php else if ($post->post_type=='post'): ?> Put HTML for 'post' post type here... <?php endif; ?>
Or if there a reason you can't create your own template filename hierarchy in the form of filenames like
post-foo.php
,post-foo.php
,post-post.php
, also within your Loop? This one like of code could do that for it:<?php include("post-{$post->post_type}.php"); ?>
-
- 2011-04-13
Une réponseplus simple si vousne voulezpas créer denouveauxfichiers,ou si vous avez lapeine degâcher vos requêtes,est d'utiliser ceci dans votrefunctions.php:
function sql_where_clause($sql) { if (is_category()) { $sql = str_replace("cms_posts.post_type = 'post'", "cms_posts.post_type='post' OR cms_posts.post_type = 'news' OR cms_posts.post_type='event'", $sql); } return $sql; } add_filter('posts_where', 'sql_where_clause');
bien sûr,vous devrez lemodifierpour qu'il contienne vostypes d'articlespersonnalisés.J'aifait celapour quemon category.php réponde àtous lestypes demessagespersonnalisés queje voulais comme s'ils devaientnormalement être là.Économisebeaucoup deproblèmes.
Modifier:méfiez-vous de la version de WP sur laquelle vous l'utilisez.Il semblerait que les anciennes versions de WP utilisaient wp_posts au lieu de cms_posts,alors vérifiez quelsnoms detable vous souhaitez utiliser ou vous obtiendrez des résultats étranges (rienne s'affiche,en gros)
An easier answer if you didn't want to create new files, or go through the trouble of messing up your queries is to use this in your functions.php:
function sql_where_clause($sql) { if (is_category()) { $sql = str_replace("cms_posts.post_type = 'post'", "cms_posts.post_type='post' OR cms_posts.post_type = 'news' OR cms_posts.post_type='event'", $sql); } return $sql; } add_filter('posts_where', 'sql_where_clause');
of course, you'll need to modify it so that it has your custom post types in with it. I did this so that my category.php would respond to all the custom post types i wanted as if they should normally be there. Saves a lot of trouble.
Edit: Be wary of what version of WP you use this on. It would appear that older versions of WP used wp_posts instead of cms_posts, so verify what table names you're looking to use or you'll end up with odd results (nothing showing up, basically)
-
WordPressn'ajamais,pour autant quemamémoire s'étire,utilisé `cms_`par défautet atoujours utilisé` wp_`,bien que cepréfixepuisse être changé sitepar site.Labonne choseest d'utiliser `$ wpdb->posts`plutôt que de deviner unpréfixeparticulier.WordPress has never, as far as my memory stretches, used `cms_` by default and has always used `wp_`, though that prefix can be changed on a site by site basis. The correct thing is to use `$wpdb->posts` rather than guess at any particular prefix.
- 0
- 2013-06-05
- s_ha_dum
Jetravaille avec untype depublicationpersonnalisé qui utilise les catégories WordPressnormales.
Jepeuxmodifiermonmodèle de catégoriepour affichermestypes depublicationpersonnalisésexactement commeje les souhaite.
Leproblèmeest qu'unefois queje fais cela,les articles deblognormaux sont également affectés.
Bien sûr,je peux limiter les articles deblognormaux ou letype depublication à une seule catégorieet créer un ID de catégorie.phppourtravailler avec cette seule catégorie.
Maisje me demande s'ilexiste une solutionplusflexible?
Est-ilpossible de créer desmodèles de catégories spécifiques auxtypes depublication,c'est-à-dire unpour afficher lesmessages,unpour afficher lestypes demessagespersonnalisés,etc.
Est-cepossible dutout?Sinon,quelest lemeilleurmoyen de contourner ceproblème?