Help us understand the problem. What is going on with this article?

WordPressで使えそうなPHPの連想配列

PHPの連想配列をたまに使おうとして忘れがちなのでメモ。

達成したいこと

  • ナビゲーションの並びを後からでも変更しやすいようにしたい
  • ナビゲーションに画像を使用したときに画像パスを含めるとソースがカオスなことになるのをナントカしたい
  • ナビゲーションは基本的に同じようなことを繰り返し書くことになるけど、書くのも見た目的にもなんだか面倒臭いので同じことを何度も書きたくない

環境

  • PHPが使用出来る環境
  • PHPのバージョンは5.4以降ならきっと大丈夫

想定

  • WordPressでファイルパスやページのパスを羅列する場合
    • echo esc_url(home_url('/')) 云々を定数に置き換えればWordPressでなくても使えます

避けたいパターン

避けたいパターン
<li role="menuitem"><a href="<?php echo esc_url(home_url('/')); ?>">HOME</a></li>
<li role="menuitem"><a href="<?php echo esc_url(home_url('/')); ?>about/">ABOUT</a></li>
<li role="menuitem"><a href="<?php echo esc_url(home_url('/')); ?>gallery/">GALLERY</a></li>

上の例は3つしかないので未だマシですが、これが5つ以上になったら見るだけで発狂しそうです。

念願叶ったパターン

念願叶ったパターン
<?php
 $navLists[] = array( 'url' => '', 'name' => 'HOME' );
 $navLists[] = array( 'url' => 'about/', 'name' => 'ABOUT' );
 $navLists[] = array( 'url' => 'gallery/', 'name' => 'GALLERY' );
?>

<?php foreach ( $navLists as $navList ): ?>
 <li role="menuitem"><a href="<?php echo esc_url(home_url('/')); ?><?php echo $navList['url']; ?>"><?php echo $navList['name']; ?></a></li>
<?php endforeach; ?>

「記述量増えてるじゃないか」 と何処からか石ころでも投げられてきそうですが、以下のように何かしらの変更があったときに煩わしさが減ります。

こんなとき便利かも

  • ちょっとデザインを変更したい。(大抵ちょっとの変更じゃ済まないというツッコミは今は無しで)
    • クラスだのIDだのリストの数の分だけ変更せずとも、一箇所の変更で済みます。
  • 並び順を変えたい。一部を削除したい。一部を追加したい。
  • 一部のページのURLを変えたい。一部のページのページ名を変えたい。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした