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;
}
コメント