web-dev-qa-db-fra.com

Est-il possible de changer n'importe lequel des HTML/URL renvoyés par the_category ()

J'ai trouvé qu'il s'agit de l'un de mes fichiers de thème:

<?php the_category( ' ' ) ?>

Idéalement, j'aimerais envelopper le tout dans une fonction et remplacer certaines des adresses URL en sortie, mais je ne semble pas pouvoir affecter la sortie du tout:

<?php updateToPerfectURLs(the_category( ' ' )); ?>

En fin de compte, je souhaite modifier la création wordpress ic de l’URL pour mes pages de catégorie. Et cela irait au-delà de ce que vous pouvez faire avec le paramètre de base de catégorie ....

1
wilsonf1

Je ne sais pas pourquoi vous avez besoin de cela ni quel est votre cas d'utilisation exact ici, mais en bref, the_category() renvoie simplement la valeur renvoyée par get_the_category_list() qui utilise get_category_link() qui utilise get_term_link() pour obtenir l'URL de la page de catégorie.

C’est là que vous devriez chercher si vous devez changer l’URL du lien renvoyant à la page de catégorie. Dans get_term_link(), il existe un filtre term_link que vous pouvez utiliser pour modifier l'URL renvoyée pour un terme/une catégorie spécifique.

return apply_filters( 'term_link', $termlink, $term, $taxonomy );

Ainsi, si vous devez modifier l'URL du terme ID 1 pour la taxonomie category, vous pouvez essayer quelque chose comme le code suivant ( REMARQUE: Le code n'est pas testé )

add_filter( 'term_link', function ( $termlink, $term, $taxonomy )
{
    // Check if we have the correct term and taxonomy, if not, bail early
    if (    $term->term_id != 1 // Check if current term is 1 or not
         && $taxonomy != 'category' // Check if the current term is from the taxonomy category
    )
        return $termlink;

    // If we came to this point, we have the desired term and taxonomy, so lets alter the URL
    // Here should be the code to construct your new URL, you need to work on this
    $termlink = 'VALUE_OF_NEW_URL'; // This will be the new URL our term to link to its term page

    return $termlink;
}, 10, 3 );
2
Pieter Goosen