更新:元の質問は解決しましたが、これはグローバル変数を使用しない理由についての有効な議論に変わっているので、それを反映するために質問を更新しています。解決策は<?php global $category_link_prop; echo esc_url( $category_link_prop ); ?>
@TomJNowellが提案したとおりでした。
更新2:私は今、私が望んでいたことを正確にやっている。しかし、私はまだグローバルスコープを使用しているため、より良い方法を見つけることができれば幸いです。
私は、テーマのさまざまな場所で使用されるカテゴリへのパーマリンクのグローバル変数全体を設定しようとしています。この主な理由は、メインナビゲーションと、現在の投稿のカテゴリに基づいて選択される一連のサブナビゲーションの両方で使用するためです。これは、他のユーザーが使用するためにリリースするテーマではありません。しかし、非常に特定の目的のために構築されています。
これが、私が現在それらを作成している方法です(いくつかの変数にのみ貼り付けました)。
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' );
これ<?php global $prop; echo $prop; ?>
で、コードのリンク全体を取得する4つの場所にアクセスできます。それが変わるとき、私はそれを一箇所で変えるだけです。グローバルな範囲を含まない代替案を受け入れています。