Je crée une "Page à balise simple" commune pour différents types de publication.
J'utilise le code suivant:
$loop = new WP_Query( array( 'post_type' => 'any', 'tag' => single_term_title( '', false ), 'posts_per_page' => 10 ) );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="entry-content">
<?php the_excerpt(); ?>
</div><!-- .entry-content -->
<?php endwhile; // End the loop. ?>
Cela fonctionne bien jusqu'à ce qu'il n'y ait plus de conflit de termes de taxonomie.
Par exemple:
Si j'ai les noms de catégorie et de tag - "Vidéos" , la catégorie aura un slug - "/ videos" & Tag "/ videos-2".
Dans le cas où slug n'est pas identique à taxonomy, le code ci-dessus ne fonctionne pas.
J'ai besoin d'une fonction alternative pour single_term_title () , quelque chose comme "single_term_slug ()" .
Des idées?
P.S. Je pensais à la fonction " get_term_by () ", mais je n’ai pas eu la chance de l’adopter pour le code ci-dessus.
Mise à jour: J'ai posté mon code ci-dessous.
Merci les gars pour cette réponse rapide. Très appréciée!
Voici le code pour la page "globale" Tags (affichant les termes de la taxonomie 'post_tag' par défaut):
<?php
$term_slug = get_queried_object()->slug;
if ( !$term_slug )
return;
else
$loop = new WP_Query( array( 'post_type' => 'any', 'tag' => $term_slug, 'posts_per_page' => 10 ) );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="entry-content">
<?php the_excerpt(); ?>
</div><!-- .entry-content -->
<?php endwhile; // End the loop. ?>
Et l'exemple de code suivant concerne la requête de taxonomie personnalisée (affichant les termes de la taxonomie personnalisée):
<?php
//http://codex.wordpress.org/Function_Reference/WP_Query#Taxonomy_Parameters
$term_slug = get_queried_object()->slug;
if ( !$term_slug )
return;
else
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'gallery_category',
'field' => 'slug',
'terms' => $term_slug,
'posts_per_page' => 10
)
)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="entry-content">
<?php the_excerpt(); ?>
</div><!-- .entry-content -->
<?php endwhile; // End the loop. ?>
Il existe une référence au terme objet dans $wp_query
et une fonction de raccourci pour saisir ceci (à condition que vous exécutiez WordPress 3.1): get_queried_object()
.
Donc, pour obtenir le slug vous feriez echo get_queried_object()->slug;
Si vous n'exécutez pas WordPress 3.1, vous devrez appeler le get_queried_object()
sur le global $wp_query
:
global $wp_query;
echo $wp_query->get_queried_object()->slug;
Voici une fonction single_term_slug()
à la fourche sur single_term_title ()
function single_term_slug( $prefix = '', $display = true ) {
$term = get_queried_object();
if ( !$term )
return;
if ( is_category() )
$term_slug = apply_filters( 'single_cat_slug', $term->slug );
elseif ( is_tag() )
$term_slug = apply_filters( 'single_tag_slug', $term->slug );
elseif ( is_tax() )
$term_slug = apply_filters( 'single_term_slug', $term->slug );
else
return;
if ( empty( $term_slug ) )
return;
if ( $display )
echo $prefix . $term_slug;
else
return $term_slug;
}