開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

WordPressで、投稿/ページのスラッグ(slug)を取得する方法。

最終更新:2017-05-15 by Joe

WordPressで、投稿・ページのスラッグ(slug)を取得する方法です。

投稿・ページのスラッグ(slug)を取得する関数

スラッグは、postsテーブルのnameカラムに入っています。

テーブルのすべてのカラムはget_post_field関数で取得できるようになっています。

postsテーブルのカラム一覧です。代表的な関数にget_the_content()などで、contentを取得できるようなものがありますが、get_post_fields()は、フィルターがかかっておらず、ほぼ素の格納値を取得します。

より直接的にフィールドにアクセスする

下記でも同じ値が取得できます。

ループ内で使うことと、$postのglobal宣言がキモです。

ループ内では、グローバルの$post変数に、現在の投稿オブジェクトが入っています。

「ループ内」の意味がわからない人は、ググって下さい。簡単には

  • while ( have_posts() ) { }の中で
  • the_posts()の後、

ということです。メインループなら、have_posts()、カスタムループなら$custom_query_object->have_posets()の形ですね。(これ以上の説明はまた別の記事で・・)

さて、global宣言により、$postオブジェクトに直接アクセスできるようになりますが、このglobalを使う方法を好むかどうかはあなた次第です。

むやみなglobal宣言は、通常は、設計上のスコープ管理の概念を破壊しますので、通常は避けますが、Wordpressに於いては、グローバルな$postへのアクセスを許したほうがスッキリかける場合もあるので、人によっては使われる事はやや多い気がします・・。

筆者としては、極力、get_post_field()で行儀よくやる派です。

スラッグ取得の関連リンク

うまくスラッグ取得、できたでしょうか?