WordPress : Faites écho à tous les noms de catégorie, sauf un

Publié par Jean-Michel le

J’ai ce code simple, qui crée des fils d’Ariane :

function the_breadcrumb() {
    if (!is_home()) {
        echo '<a href="';
        echo get_option('home');
        echo '">';
        echo 'home';
        echo " / ";
        if (is_category() || is_single()) {
            the_category(' / ');
            if (is_single()) {
                echo " / " . '<a href="#">' . get_the_title() . '</a>';
            }
        } elseif (is_page()) {
            echo " / " . '<a href="#">' . get_the_title()  . '</a>';
        }
    }
}

Et cela résonne :

<p class="bread-crumbs">
    <a href="http://fashion-detail.dev">home / </a>
    <a href="http://fashion-detail.dev/?cat=4" title="View all posts in Fashion" rel="category">Fashion</a> /
    <a href="http://fashion-detail.dev/?cat=16" title="View all posts in Top" rel="category">Top</a> /
    <a href="#">This is in the fashion category.</a>
</p>

Cependant, il ne veut pas qu’il affiche la a hrefbalise qui renvoie à la topcatégorie. Existe-t-il un moyen d’inclure un str_replace ou simplement d’empêcher the_category d’appeler top(j’ai toujours besoin du message, je ne veux tout simplement pas créer de lien topdans le fil d’Ariane) ?

Solution n°1 trouvée

the_category echole contenu. Vous ne pourrez pas utiliser la manipulation de chaînes. Aucune chaîne n’est returnéditée que vous pourriez manipuler. Ils sont juste echoed immédiatement.

Vous pouvez complètement filtrer une catégorie particulière, ce qui semble être une option, avec ceci :

function cat_filter_wpse_137596($categories) {
  foreach ($categories as $k => $c) {
    if ('uncategorized' === $c->slug) {
      unset($categories[$k]);
    }
  }
  return $categories;
}

Vous l’utiliseriez comme :

    add_filter('get_the_categories','cat_filter_wpse_137596');
    if (is_category() || is_single()) {
        the_category(' / ');
        if (is_single()) {
            echo " / " . '<a href="#">' . get_the_title() . '</a>';
        }
    } elseif (is_page()) {
        echo " / " . '<a href="#">' . get_the_title()  . '</a>';
    }
    remove_filter('get_the_categories','cat_filter_wpse_137596');

Il n’y a pas de moyen facile de conserver la catégorie et de supprimer le lien. Vous auriez besoin d’une mauvaise expression régulière sur le the_categoryfiltre.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *