WordPressでよくある固定ページのスラッグを取得して動的に画像を表示するコード

良く使うコードですが、例えば固定ページのスラッグが sample の場合 page-title-sample.png を表示し、固定ページのスラッグが contact の場合 page-title-contact.png を表示します。

  
この記事は2年以上前に書かれたものです。
情報が古い可能性があります。

スラッグとは

投稿に設定できる任意の文字列で、URLの一部としてもよく使われたりします。
例えばスラッグが contact なら、 http://example.com/cantact/ といった感じですね。

ソースコード

get_pageは非推奨になっているので、get_postを使用します。

page.php

<?php /** header.phpを読み込みます */ ?>
<?php get_header(); ?>

<?php
// 現在表示しているページの投稿IDから投稿情報を取得します
$page = get_post( get_the_ID() );

// 投稿のスラッグを取得します
$slug = $page->post_name;

// 取得したスラッグを元に page-title-{$slug}.png への画像のパスを取得します
$img_src = get_template_directory_uri() . '/img/page-title-' . $slug . '.png';
?>

<?php while ( have_posts() ) : the_post(); ?>
    
    <div id="pageTitle">
        <h2><img src="<?php echo esc_attr( $img_src ); ?>" alt="<?php the_title_attribute(); ?>" /></h2>
    </div>
        
<?php endwhile; ?>

<?php /** footer.phpを読み込みます */ ?>
<?php get_footer(); ?>

画像が存在するか判別する

<?php 
$img_path = get_template_directory() . '/img/page-title-' . $slug . '.png';

if( file_exists( $img_path ) )
{
    // 画像が存在する場合
}
else
{
    //画像が存在しない場合
}

URIを返す get_template_directory_uri ではなく ディレクトリへの絶対パスを取得する
get_template_directory を使っていることに注意してください。

http や https ではなく Windows で例えると C:¥ などから始まるパスからファイルの存在チェックをおこなうということですね。
(Linux なら /var など。)

画像をimgタグで出力したいときは、get_template_directory_uri のほうを使います。

  

共有やブックマークなど