ワードプレスで表示中の投稿のスラグ(URLの最後の部分)を取得するPHPのコードをご紹介いたします。


ワードプレスで表示中の投稿のスラグSlugを取得

スラグとは一意のページのURLに使われる文字列のことです。このスラグをテーマのSingle.phpやSingler.phpで取得するコードは下記のようになります。

<?php 
$post_slug = get_post_field( 'post_name', get_post() );
?>

またはグローバル変数 $postから取得することも可能です。

<?php 
global $post;
$post_slug = $post->post_name;
?>

投稿のIDからスラグSlugを取得

当行のIDからスラグを取得することも可能です。
この場合下記のようなコードになります。

$post_id = 1; //投稿IDの数字を指定します
$post = get_post($post_id); 
$slug = $post->post_name;

functions.phpでスラグSlugを取得

下記のコードはテーマのFunctions.phpに記載しても動作いたしません。なぜならテーマのFunctions.phpは投稿が読み込まれる前に実行されてしまうからです。

<?php 
$post_slug = get_post_field( 'post_name', get_post() );
?>

この為、テーマのFunctions.phpに記載して投稿ページのスラグを取得するには、投稿が読み込まれた後に実行されるアクションの仕組みを利用します。

template_redirectはページが読み込まれる直前に実行されるアクションですので、このアクションの中に上記コードを記載するとページスラグを取得可能です。

function getslug() {
    $post_slug = get_post_field( 'post_name', get_post() );
}
add_action('template_redirect', 'getslug');

アクションについての参考記事はこちらです
ワードプレスの機能を自作プログラムで利用するactionとfilterの仕組み

WordPress ワードプレスサイトのプログラミング、エラーの修正、テーマやプラグインのカスタマイズのご依頼ご相談はWPドクターまでお気軽にお送りください