パスの表示をスマートに
WordPressのURLやパスを取得する関数は基本的にフルパスを返してくるのですが、個人的には好きではないので相対パスでいただきたいのです。
ネットを検索すると画像のパスを相対パスにしたり、記事のパーマリンクを相対パスにする方法がありますが、単にトップへの相対パスを知りたい場合、以下の関数を作っておくと便利です。
// ------------------------------------------------------------------- // WordPressホームURLへの相対パスを返す関数 // ------------------------------------------------------------------- // <例> // WPホーム:http://sample.com/ // 現在のページ:http://sample.com/test/under/sample.html // →「../..」が返る。 // <返却値例> // 「.」「..」「../..」「../../..」等。 function get_rel_home() { // WPホームURLと現在のURLから階層数を算出 $level = substr_count ( str_replace( preg_replace('/\/$/','',home_url()) . '/' , '' , ($_SERVER["HTTPS"]==''|$_SERVER["HTTPS"]==='off' ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] // ↑ IIS対応 ) , '/' ); // 相対パスを生成して返却。 $path = '.'; if($level>0){ $path_array = array(); for($i=1; $i<=$level; $i++){ $path_array[] = '..'; } $path = join('/', $path_array); } return $path; }
使い方は以下の通り。
<a href="<?php echo get_rel_home(); ?>/">トップページ</a> <img src="<?php echo get_rel_home(); ?>/images/hoge.png" alt="画像">
トップ直下から実行すれば.
を返し、1つ下の階層から実行すれば..
が返ります。
<a href="../">トップページ</a> <img src="../images/hoge.png" alt="画像">
以上です。