AKTUALIZACJA: Moje oryginalne pytanie zostało rozwiązane, ale zamienia się w ważną dyskusję na temat tego, dlaczego nie używać zmiennych globalnych, dlatego aktualizuję pytanie, aby to odzwierciedlić. Rozwiązanie było takie, <?php global $category_link_prop; echo esc_url( $category_link_prop ); ?>
jak sugerował @TomJNowell.
AKTUALIZACJA 2: Teraz robię dokładnie to, co chciałem. Ale nadal używam globalnego zasięgu i chętnie znajdę lepszy sposób.
Próbuję skonfigurować całą masę zmiennych globalnych dla bezpośrednich łączy do kategorii, które będą używane w różnych miejscach mojego motywu. Głównym tego powodem jest użycie zarówno w głównej nawigacji, jak i w szeregu nawigacji podrzędnych, które są wybierane na podstawie kategorii, w której znajduje się bieżący post. To nie jest temat, który udostępnię innym osobom, ale został zbudowany w jednym, bardzo określonym celu.
Tak właśnie je teraz tworzę (wkleiłem tylko kilka zmiennych).
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' );
Mogę teraz zrobić <?php global $prop; echo $prop; ?>
4 miejsca i odzyskać cały link do kodu. Kiedy te zmiany muszę zmienić tylko w jednym miejscu. Jestem otwarty na alternatywy, które nie obejmują zasięgu globalnego.