昨日、記述したarchive-menu.phpですが、一覧のメニュー(全てのメニュー)が表示されるようになっているのですがボタンでそれぞれのメニュー(「パスタ」、「サラダ」、「パン&スイーツ」、「ドリンク」)の画面に飛ぶようにしたいです。下記のようなコードを書きました。
<div class=”p-menu__items-btns”>
<a href=”<?php echo esc_url(get_term_link(‘pasta’, ‘genre’)); ?>” class=”p-menu__items-btn”>
<span class=”p-menu__items-btn-name”>パスタ</span>
</a>
<a href=”<?php echo esc_url(get_term_link(‘salada’, ‘genre’)); ?> ” class=”p-menu__items-btn”>
<span class=”p-menu__items-btn-name”>サラダ</span>
</a>
<a href=”<?php echo esc_url(get_term_link(‘breadsweets’, ‘genre’)); ?>” class=”p-menu__items-btn”>
<span class=”p-menu__items-btn-name”>パン&<br>スイーツ</span>
</a>
<a href=”<?php echo esc_url(get_term_link(‘drink’, ‘genre’)); ?>” class=”p-menu__items-btn”>
<span class=”p-menu__items-btn-name”>ドリンク</span>
</a>
</div>
pastaを例にすると<a href="<?php echo esc_url(get_term_link('pasta', 'genre')); ?>" class="p-menu__items-btn">
:ここでは、get_term_link('pasta', 'genre')
関数を使用して、「パスタ」というジャンルのページへのリンクを動的に生成しています。esc_url
関数は、URLを安全にエスケープするために使用されます。これにより、XSS(クロスサイトスクリプティング)攻撃などのセキュリティリスクを防ぐことができます。
最初に上記コードを書いたのですが、メニューを配列にして、少しまとめます。
<?php
$menu_items = [
‘pasta’ => ‘パスタ’,
‘salada’ => ‘サラダ’,
‘breadsweets’ => ‘パン&スイーツ’,
‘drink’ => ‘ドリンク’, ];
?>
<div class=”p-menu__items-btns”>
<?php foreach ($menu_items as $slug => $name): ?>
<a href=”<?php echo esc_url(get_term_link($slug, ‘genre’)); ?>” class=”p-menu__items-btn”> <span class=”p-menu__items-btn-name”><?php echo $name; ?></span> </a>
<?php endforeach; ?> </div>
まず$menu_items
という配列を定義しています。この配列のキーにはカテゴリのスラッグ(英語名),値には表示する名前(日本語名)を設定しています。
次に、foreach
ループを使用して、この配列の各要素に対してリンク(aタグ)を生成しています。ループ内では、$slug
と$name
をそれぞれのメニュー項目のスラッグと名前として使用し、get_term_link
関数に$slug
を渡してカテゴリーページへのリンクを生成し、$name
でメニューの名前を表示しています。まだ、効率化できそうですが、今の私のレベルではここまでです。