【WordPress】投稿ページのslug(スラッグ)を取得する方法

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;」を使う方向でいきたいと思います。

場合によっては他のも使えるかもしれないですが、頭の片隅にでも置いてくレベルかなと思います。

それでは、最後までお読みいただきありがとうございました!

スポンサーリンク