MISE À JOUR: Ma question d'origine a été résolue, mais cela se transforme en une discussion valable sur pourquoi ne pas utiliser des variables globales, donc je mets à jour la question pour refléter cela. La solution était <?php global $category_link_prop; echo esc_url( $category_link_prop ); ?>
comme l'a suggéré @TomJNowell.
MISE À JOUR 2: Je l'ai maintenant en faisant exactement ce que je voulais. Mais j'utilise toujours la portée mondiale et serais heureux de trouver une meilleure façon.
J'essaie de mettre en place tout un tas de variables globales pour les permaliens vers des catégories à utiliser à divers endroits de mon thème. La principale raison en est à utiliser à la fois dans la navigation principale, ainsi que dans une série de sous-navigations qui sont choisies en fonction de la catégorie dans laquelle le message actuel se trouve. Ce n'est pas un thème que je publierai pour une utilisation par d'autres, mais est construit dans un but très spécifique.
C'est ainsi que je les crée actuellement (je n'ai collé que quelques-unes des variables).
function set_global_nav_var()
{
//proposal
global $prop;
// Get the ID of a given category
$category_id_prop = get_cat_ID( 'proposal' );
// Get the URL of this category
$category_link_prop = get_category_link( $category_id_prop );
$prop = '<a href="' .esc_url( $category_link_prop ). '" title="Proposal">Proposal</a>';
//Calvinball
global $cb;
// Get the ID of a given category
$category_id_cb = get_cat_ID( 'calvinball' );
// Get the URL of this category
$category_link_cb = get_category_link( $category_id_cb );
$cb = '<a href="' .esc_url( $category_link_cb). '" title="Calvinball">Calvinball</a>';
}
add_action( 'init', 'set_global_nav_var' );
Je peux maintenant faire dans les <?php global $prop; echo $prop; ?>
4 endroits qui vont récupérer le lien complet pour le code. Lorsque cela change, je n'ai qu'à le changer en un seul endroit. Je suis ouvert à des alternatives qui n'impliquent pas la portée mondiale.