スラッグから固定ページのパーマリンクを取得する(狙ったページのID取得が肝心だよ)

↓以前この投稿では固定ページIDからスラッグを取得する方法について書きました。

WordPress固定ページのスラッグを取得する

今回はその逆のような感じ。
スラッグからIDを取得する方法。

例えば別のページから、特定のスラッグを持つページへのリンクをつくりたい場合などに有用です。

  1. 固定ページのスラッグからページ情報を取得
  2. 取得したページ情報からIDを取得
  3. 取得したIDからパーマリンクを取得

という流れです。

//slugというスラッグ名を持つページ情報
$page = get_page_by_path('slug');
//パーマリンクを取得
echo get_permalink($page->ID);

取得した$pageからはIDだけじゃなく記事本文などいろんな情報を取得できます。
記事本文を表示したいときには以下のようにしたいところですが、これは正しくないようなのでご注意を。

//正しくない記事本文の出力
echo $page->post_content;

//正しい記事本文の出力
seteup_postdata($page);
the_content();

↓なぜ正しくないかはこちらが参考になりました。

WordPress › フォーラム » ページスラッグからIDの取得について

post_content そのものは、ショートコードの処理、 などの処理が行なわれていないこと、また、パスワード保護されたページかどうかのチェックも行なわれていないからです。

取得できたからって何でも表示すりゃいいってもんじゃないようで。
このあたり、もうちょっと勉強しないといけません。目指せ安全なコード記述。

Wordpress | |