とある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内で準備して、記事内でショートコードで出力するという方法にしても良いかもしれませんね。