とあるWPで構築するサイトをローカル環境でコーディング作用しているときのことです。

ローカル環境でWPを利用してサイトを制作するとき、固定ページを作成すると、その固定ページには固有のIDと、それとは別でslugという固有のページ名みたいなもを決めると思います。

ナビゲーションや内部リンク用のURLを画像やテキストにaタグをつけてhrefにURLを付ける場合、以下の方法で設定することがよくあります。

 

<?php echo get_permalink("ID番号"); ?>

 

これで固定ページを表示するURLが出力できるわけなんですが、意外とID番号を調べるのが面倒だったり、URLが上手く出力しなかったりすることがあります。

本番環境で先に固定ページを作成されていると、開発環境で作成した固定ページとのID番号の違いでURLが出力できなかったり別の固定ページだったりエラーが発生することがあります。

それならスラッグ名は同じなのでこのスラッグ名でURLが取得できればいいではないかと思いました。

その方法は以下のような方法になります。

 

$page = get_page_by_path("スラッグ名");
<a href="<?php echo return esc_url(get_permalink($page -> ID)); ?>">リンク</a>

 

スラッグ名からページ情報を取得し、それからID番号を取り出して先ほどのget_permalink()でURLを取得するという方法です。

ただ、毎回これをするとPHPのプログラミングが面倒なので、これをfunction.phpに追記してメソッドで起こせるようにすると便利でした。

 

// function.phpに追記
function get_permalink_slug($slug) {
  $page = get_page_by_path($slug);
  return esc_url(get_permalink($page -> ID));
}

// 使用する時
<a href="<?php echo get_permalink_slug("スラッグ名"); ?>">リンク</a>

 

これで本番環境と開発環境でWPの固定ページID番号が違ってもスラッグ名によりURLを取得することができます。

もし、例えば固定ページ内に他ページや投稿のURLを差し込みたい場合はショートコードをfunction.php内で準備して、記事内でショートコードで出力するという方法にしても良いかもしれませんね。