web-dev-qa-db-fra.com

Si sur la page du terme -> obtenir le terme actuel?

J'essaie d'écrire une sorte de fonction "breadcrumb" dans mon "functions.php"

Je voudrais demander si je suis sur une page de terme et si je veux imprimer le terme actuel dans lequel je suis.

Par "terme-page", j'entends ce qui suit. J'énumère tous les termes d'une taxonomie personnalisée (associée à un type de post personnalisé) comme un type de catégorie dans mon en-tête. Je le fais avec get_term_link($term->slug, 'my_taxonomy');

Dans ma nouvelle fonction pour la chapelure, je voudrais demander si je suis sur l'une de ces pages et imprimer ce terme.

Tout d'abord,… je fais ça…

if ( is_taxonomy_hierarchical('my_taxonomy) ) {
            echo "test";

Mais maintenant, ma fonction dépend de cette chaîne my_taxonomy. J'adorerais utiliser cette fonction pour toutes les taxonomies à venir. Comment puis-je faire ceci? Il existe des balises conditionnelles comme is_category() qui ne nécessitent aucun paramètre. Pourquoi tous les conditionnels de terme ou de taxonomie ont-ils besoin de ce paramètre?

Et comment puis-je imprimer le terme actuel dans lequel je suis? Pour l'instant, je ne fais que faire écho à "test", mais j'aimerais toutefois imprimer le terme actuel.

Des idées à ce sujet? Merci d'avance.

METTRE À JOUR:

function list_breadcrumbs() {

    $q_object = get_queried_object();
    $taxonomy = $q_object->taxonomy;

    $seperator = " <span class='separator'>&rang;</span> ";

    if ( !is_home() ) {

            echo "<a href='" . get_bloginfo('url') . "' title='Home'>Home</a>" . $seperator;

        if ( is_category() ) {
            $category = get_the_category(); 
            echo "<span class='breadcrumb'>" . $category[0]->cat_name . "</span>";
        } else if ( is_tax( $taxonomy ) ) {
            echo "The Term Name";
        } else if ( is_single() ) {
            …
        } else if ( is_page() ) {
            …
1
mathiregister

Vous voudrez get_queried_object() . C'est une fonction très générique - et renvoie simplement l'objet demandé - donc un seul post, ce serait un objet post.

Par exemple, l'objet de retour peut être de la forme:

Object (
    [term_id] => 299
    [name] => test
    [slug] => test
    [term_group] => 0
    [term_taxonomy_id] => 317
    [taxonomy] => event-category
    [description] => 
    [parent] => 0
    [count] => 2
)

Donc par exemple:

  $q_object = get_queried_object();
  if( isset($q_object->taxonomy) ){
     $taxonomy = $q_object->taxonomy;
  }else{
    //Not a taxonomy page
  }

Pour utiliser cela dans une fonction:

function wpse51753_breadcrumbs(){
    if( !is_tax() && !is_tag() && !is_category() )
       return;

    //If we got this far we are on a taxonomy-term page
    // (or a tag-term or category-term page)
    $taxonomy = get_query_var( 'taxonomy' );
    $queried_object = get_queried_object();
    $term_id =  (int) $queried_object->term_id;

    //Echo breadcrumbs
}

Ensuite, il suffit de wpse51753_breadcrumbs(); dans votre modèle où vous souhaitez afficher le fil d'Ariane.

4
Stephen Harris