WordPressの投稿や固定ページの個別ページでslug(スラッグ)を参照したいことって案外あります。
get_the_ID()のように一発でとれる関数はなく、いつもどのように取得しようか迷うのでメモしておきます。
スポンサーリンクslug(スラッグ)を取得する方法
<?php $slug = $post->post_name; ?>
上記でページの「slug」を取得できます。固定ページでも投稿でも同じ方法で「slug」を取得できます。
僕は一先ずこの方法で取得するようにしようかと思っています。
注意点
「while (have_posts()) : the_post();」のループ内で使用しないと「$post」に正しく投稿情報が入っていない場合があります。
投稿IDや固定ページIDが分かる場合
ループ外からでも取得したいページのIDが分かっている場合は「slug」を取得することができます。
<?php // $idには取得したいページのIDが入っています $post_info = get_post($id); $slug = $post_info->post_name; ?>
こちらは少し特殊な状況かと思いますが、たまに使うかも?
ページURLにslugが入っている場合
ループ外からでもURLにslugが入っている場合は「slug」を取得することができます。
<?php $slug_name = basename(get_permalink()); ?>
URLに「URLパラメータ(?~)」や「ページ内リンク(#~)」がある場合でも正常に取得できました。
注意点
パーマリンク設定でslugが入らない「数字ベース」などに設定している場合、投稿ページではslugを取得できません。固定ページはURLにslugが入ったままなのでこの方法で取得可能です。
取得できる場合とできない場合があるので、この対応方法は個人的にはちょっと微妙かなと思います。パーマリンク設定はサイトによって異なりますので。
まとめ
slugを取得する関数はありませんが、簡単に取得することはできます。
いくつか方法があって悩みますが、今後は「\$slug = \$post->post_name;」を使う方向でいきたいと思います。
場合によっては他のも使えるかもしれないですが、頭の片隅にでも置いてくレベルかなと思います。
それでは、最後までお読みいただきありがとうございました!
スポンサーリンク