wordpressのテーマ開発で絶対使う!インクルードタグ4種類

wordpressのテーマを作成する時に重要となるのがインクルードタグです。

パーツに分けてテンプレートファイルをファイルを読み込む時に使います。

もちろん使わなくてもできますが、使ったほうが楽です。

phpにはincludeやrequireといった関数があるのですが、wordpressのインクルードタグを使えばより便利にテンプレートファイルを読み込むことができます。

headerテンプレートを読み込むget_header

get_headerはheaderのテンプレート(header.php)を読み込む時に使います。

テーマの中にheader.phpが存在しない場合、wp-includes/theme-compat/header.phpが読み込まれます。

headerテンプレートを分ける

header.phpはハイフンで区切る(header-name.php)ことにより、異なるテンプレートを作成することができます。

読み込む場合は、get_headerの引数を設定(get_header(name))します.

switchを使ってheaderテンプレートを分ける場合のソースコードの例はこちら。

// headerの読み込みを分岐させる
switch (true) {
    case is_home():
        // header-home.phpのテンプレートが読み込む
        get_header('home');
        break;
    case is_page():
        // header-home.phpのテンプレートが読み込む
        get_header('page');
        break;
    default:
        // それ以外はheader.php
        get_header();
}

get_headerのフックを使う場合

get_headerのフックとは、get_headerの関数を実行する前に別の処理を実行させることができます。

htmlタグの前に処理を差し込むことができるので、リダイレクトを利用する時に重宝されます。

get_headerのフックを使ってリダイレクトを実行させるソースコードの例はこちら。

function.phpに記述することで、固定ページにアクセスした場合は全てリダイレクトされるようになります。

// get_heaedのフック
add_action('get_header', 'doRedirectPage');

// 固定ページのリダイレクト
function doRedirectPage()
{
    if (is_page()) {
        wp_redirect('http://〇〇〇.com');
    }
}

footerテンプレートを読み込むget_footer

get_footerはfooterのテンプレート(footer.php)を読み込む時に使います。

テーマの中にfooter.phpが存在しない場合、wp-includes/theme-compat/footer.phpが読み込まれます。

footerテンプレートを分ける

footer.phpはハイフンで区切る(footer-name.php)ことにより、異なるテンプレートを作成することができます。

読み込む場合は、get_footerの引数を設定(get_footer(name))します.

switchを使ってfooterテンプレートを分ける場合のソースコードの例はこちら。

// headerの読み込みを分岐させる
switch (true) {
    case is_home():
        // footer-home.phpのテンプレートが読み込む
        get_footer('home');
        break;
    case is_page():
        // footer-home.phpのテンプレートが読み込む
        get_footer('page');
        break;
    default:
        // それ以外はfooter.php
        get_footer();
}

get_footerのフックを使う場合

get_footerのフックとは、get_footerの関数を実行する前に別の処理を実行させることができます。

get_footerのフックはテンプレートのファイル数がかなり増えてしまった時、get_footerの前にいちいち書いていくよりは、functions.phpだけ修正した方が修正箇所は少なくて済むので、そういった使い方が便利かと思います。

function.phpに記述することで、get_footerの実行前にテキストを出力することができます。

// get_footerのフック
add_action('get_footer', 'myFunction');

// 固定ページのリダイレクト
function myFunction()
{
    print 'フッターの前に出力されます。';
}

sidebarテンプレートを読み込むget_sidebar

get_sidebarはsidebarのテンプレート(sidebar.php)を読み込む時に使います。

テーマの中にsidebar.phpが存在しない場合、wp-includes/theme-compat/sidebar.phpが読み込まれます。

sidebarテンプレートを分ける

sidebar.phpはハイフンで区切る(sidebar-name.php)ことにより、異なるテンプレートを作成することができます。

読み込む場合は、get_sidebarの引数を設定(get_sidebar(name);)します.

二種類のsidebarテンプレートを使う場合、以下のような記述になります。

  • sidebar-left.php
  • sidebar-right.php
<?php get_header(); ?>
<?php get_sidebar('left'); ?>
<?php get_sidebar('right'); ?>
<?php get_footer(); ?>

get_sidebarのフックを使う場合

get_sidebarのフックとは、get_sidebarの関数を実行する前に別の処理を実行させることができます。

今回は無名関数とパラメーターを使ってget_sidebarのアクションフックのソースコードを記述してみます。

引数にはテンプレート名が設定されています。

// get_sidebarのフック
add_action(
    'get_sidebar',

    // 無名関数で実行
    function ($name) {
        print 'sidebar-' . $name . '.phpの前に出力されます。';
    }
);

テンプレートパーツを読み込むget_template_part

get_templae_partは独自のテンプレートパーツを作成してインクルードする時に使います。

get_template_partの記述方法

get_template_partの引数を指定することで読み込むファイルを指定します。

// loop.phpを読み込む
get_template_part('loop');

// loop-sub.phpを読み込む
get_template_part('loop', 'sub');

ディレクトリが違うファイルを読み込む場合はこうなります。

// dir/loop.php
get_template_part('dir/loop');

// dir/loop-sub.php
get_template_part('dir/loop', 'sub');

get_template_partのフックを使う場合

get_template_partにも同じようにフックがあります。

get_template_partが利用されている箇所、全てに出力されてしまいますので、$slugで条件分岐させると指定のget_template_partにのみ出力させることができます。

add_action('get_template_part', 'get_template_part_hook');
function get_template_part_hook($slug)
{
    print $slug;
}

コメント

タイトルとURLをコピーしました