このページでは、重要なテンプレートタグとよく使われるテンプレートタグおよびWordPress関数をCodexマニュアルをベースに記載してあります。
テンプレートタグとWordPress関数
テンプレートタグはWordPressシステムを呼び出し、WordPressの機能を実行あるいは取得するように指示する予め定義されているPHP関数のこと。
WordPress の公式オンラインマニュアルのテンプレートタグ および 関数リファレンスで一覧が確認できます。
WordPress関数
WordPressでは、テンプレートタグをHTML文書に埋め込むためにPHPコードタグを使用します。
テンプレートタグは、開始タグ(<?php)と終了タグ(?>)のPHPコードタグでWordPress関数を囲んだ形となっています。
<?php wp_head(); ?>
重要なテンプレートタグ
wp_head
'wp_head' アクションをスタートさせmetaタグやlinkタグで以下のHTMLソースを出力する。
- フィードリンク
- デフォルトCSS
- デフォルトJavaScript
- EditURI
- wlwmanifest(マニフェストファイル)
- バージョン情報
- 前の記事、次の記事へのリンク情報
- canonical
- shortlink
- 絵文字
- Embed
- DNS Prefetching
- 「最近のコメント」ウィジェット用スタイルシート
- Google検索結果スニペット
- Global Stylesのコード
Codexマニュアル 関数リファレンス/wp head
IT技術ブログ 削除方法
<?php wp_head(); ?>
テーマテンプレートファイル内の </head> タグ直前で使う。
<?php
...
/* Always have wp_head() just before the closing </head>
* tag of your theme, or you will break many plugins, which
* generally use this hook to add elements to <head> such
* as styles, scripts, and meta tags.
*/
wp_head();
?>
</head>
wp_footer
'wp_footer' アクションフックをスタートさせscritpタグでjsファイルや関数を読み込むHTMLソースを出力する。
Codexマニュアル テンプレートタグ/wp footer
<?php wp_footer(); ?>
テーマテンプレートファイル内の </body> タグ直前で使う。
<?php
/* Always have wp_footer() just before the closing </body>
* tag of your theme, or you will break many plugins, which
* generally use this hook to reference JavaScript files.
*/
wp_footer();
?>
</body>
</html>
管理バー出力
管理バー出力用にfunctions.phpへフィルターフックを追記。
add_filter( 'show_admin_bar', 'set_adminbar' );
function set_adminbar( $adminbar ) {
$adminbar = true; /* true:表示 false:非表示 */
return $adminbar;
}
一般のテンプレートタグ
bloginfo
サイトの情報を表示させるタグ。
Codexマニュアル テンプレートタグ/bloginfo
<?php bloginfo( $show ); ?>
ブログのタイトルを<h1>タグで囲んで表示。
<h1><?php bloginfo('name'); ?></h1>
get post thumbnail id
アイキャッチ画像のIDを取得する。
- 投稿のアイキャッチ画像(投稿サムネイル)がセットされている場合は、アイキャッチ画像の ID を返す。
- アイキャッチ画像がなければ、空文字列を返す。
- 投稿が存在しなければ false を返す。
参考:
アイキャッチ画像を有効にするには、add_theme_support( 'post-thumbnails' );
をテーマの functions.phpファイルに含む必要があります。
Codexマニュアル テンプレートタグ/get post thumbnail id
パラメータ
<?php $post_thumbnail_id = get_post_thumbnail_id( $post_id ); ?>
用例
アイキャッチ画像を除くすべての添付ファイルを表示する
<?php
$args = array(
'post_type' => 'attachment',
'numberposts' => -1,
'post_status' => 'any',
'post_parent' => $post->ID,
'exclude' => get_post_thumbnail_id(),
);
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
echo apply_filters( 'the_title', $attachment->post_title );
the_attachment_link( $attachment->ID, false );
}
}
?>
カテゴリー別
よく使う関数をカテゴリ別に記述しています。
Codexマニュアル 関数リファレンス
投稿
get posts
投稿IDを基に投稿のデータを取得。
get_posts の最も適切な使い方は、パラメータに基づいて投稿データの配列を作成することです。
最近の投稿あるいはパラメータに一致した投稿を取得します。複数のループを作成するのに get_posts を使用する事もできます。
ただしこの場合は new WP_Query を使用して WP_Query を直接参照するほうが好ましいでしょう。
get_pages とパラメータが似ていますが実装方法はかなり異なっており、適切に使う必要があります。get_posts は WP_Query を使用していますが、get_pages はデータベースに直接クエリを投げます。
それぞれ実装の差異を反映したパラメータになっています。
query_posts も WP_Query を使用していますが、グローバル変数 $wp_query を書き換えてメインループを直接変更しているので、使う場合は注意してください。
一方、get_posts は新しい WP_Query オブジェクトを参照するため、メインループに影響を与えません。
メインクエリが実行される前に変更したい場合は、pre_get_posts フックを使用することができます。
ページの中で、いくつかのパラメータで指定した投稿データを呼び出したい場合は、get_posts が最適でしょう。
Codexマニュアル 関数リファレンス/get posts
デフォルトの使い方
<?php $args = array(
'posts_per_page' => 5,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => '',
'post_status' => 'publish',
'suppress_filters' => true
);
$posts_array = get_posts( $args ); ?>
用例
最近の投稿をタイトル順に並べる
<?php
$args = array( 'posts_per_page' => 10, 'order'=> 'ASC', 'orderby' => 'title' );
$postslist = get_posts( $args );
foreach ( $postslist as $post ) :
setup_postdata( $post ); ?>
<div>
<?php the_date(); ?>
<br />
<?php the_title(); ?>
<?php the_excerpt(); ?>
</div>
<?php
endforeach;
wp_reset_postdata();
?>
ランダムに表示する。
(orderby パラメータに rand を指定して MySQL RAND() 関数を使用して最近の 5 件をランダムに表示します。)
<ul>
<?php
$args = array( 'posts_per_page' => 5, 'orderby' => 'rand' );
$rand_posts = get_posts( $args );
foreach ( $rand_posts as $post ) :
setup_postdata( $post ); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach;
wp_reset_postdata(); ?>
</ul>
have posts
WordPressループの中で、処理すべき記事が残っているかどうかを判断する。
この関数は現在の WordPress クエリにループできる結果があるかどうかをチェックします。
ブール型関数でTRUE または FALSE を返します。
副作用として、have_posts
はループをスタート・段階的に経由・またはリセットします。
have_posts
はループの最後に rewind_posts を呼び出して 0 を返します。
Codexマニュアル 関数リファレンス/have posts
デフォルトの使い方
<?php have_posts(); ?>
用例
投稿があるかどうかをチェックし、もしある場合は投稿に対してループ内の操作を実行します。
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// ループ内のコード
endwhile;
else :
echo wpautop( '投稿が見つかりませんでした。 );
endif;
?>
WordPressループの中で、処理すべき記事の有無をチェックする。
<?php get_header(); ?>
<section id="contents">
<?php
if (have_posts()) :
while (have_posts()) :
the_post();
get_template_part('content');
endwhile;
endif;
?>
</section><!-- #contents end -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
get post ancestors
投稿IDを基に親投稿のIDの配列を取得。
指定した投稿の先祖の投稿 ID を配列で取得します。
Codexマニュアル 関数リファレンス/get post ancestors
パラメーター
<?php get_post_ancestors( $post ) ?>
用例
// 現在のページが、固定ページ ID =123の子孫なら
// '固定ページ ID 123 の子孫ページです' と表示する:
//
if ( in_array(123, get_post_ancestors( $post->ID ) ) )
echo '固定ページ ID 123 の子孫ページです';
get_post_ancestors($post)は、最上位の固定ページ。
// カテゴリー画像の表示
// 1.アイキャッチ画像が設定されている場合は、アイキャッチ画像を使用
// 2.アイキャッチ画像が設定されていない固定ページで、
// 最上位の固定ページにアイキャッチ画像が設定されている場合は、そのアイキャッチ画像を使用
// それ以外の場合は、デフォルトの画像を表示
//
if (is_singular() && has_post_thumbnail()) {
$image = get_the_post_thumbnail(null, 'category_image', array('id' => 'category_image'));
} elseif (is_page() && has_post_thumbnail(array_pop(get_post_ancestors($post)))) {
$image = get_the_post_thumbnail(array_pop(get_post_ancestors($post)), 'category_image', array('id' => 'category_image'));
}
get the post thumbnail
現在または指定した投稿の投稿アイキャッチを取得。
投稿やページの編集画面で設定することができるアイキャッチ画像を取得します。
このタグは、設定されていればアイキャッチ画像を出力する HTML 画像エレメントを返し、設定されていなければ空文字列を返します。
参考:
アイキャッチ画像を有効にするには、add_theme_support( 'post-thumbnails' );
をテーマの functions.phpファイルに含む必要があります。
Codexマニュアル 関数リファレンス/get the post thumbnail
パラメーター
<?php echo get_the_post_thumbnail( $post_id, $size, $attr ); ?>
用例
<?php $pages = get_pages( array( 'child_of' => 1 ) ); ?>
<ul>
<?php foreach ( $pages as $page ) : ?>
<li>
<?php echo get_the_post_thumbnail( $page->ID, 'thumbnail' ); ?>
<h1><?php echo apply_filters( 'the_title', $page->post_title, $page->ID ); ?></h1>
<?php echo apply_filters( 'the_content', $page->post_content ); ?>
</li>
<?php endforeach; ?>
</ul>
has post thumbnail
投稿にアイキャッチ画像が登録されているかをチェック。
投稿にアイキャッチ画像が登録されているかどうかをチェックする関数です。
参考:
アイキャッチ画像を有効にするには、add_theme_support( 'post-thumbnails' );
をテーマの functions.phpファイルに含む必要があります。
Codexマニュアル 関数リファレンス/has post thumbnail
パラメーター
<?php has_post_thumbnail( $post_id ); ?>
用例
ループ内の現在の項目(投稿など)に投稿サムネイル(アイキャッチ画像)が付いているかチェックします。
付いていればそれを表示します。
付いていなければ、現在のテーマの images フォルダーにあるデフォルト画像を表示します。
(そのフォルダーはテーマのルートディレクトリにあるとします)
<?php
// ループの中で使用します。
if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
else {
echo '<img src="' . get_bloginfo( 'stylesheet_directory' ) . '/images/thumbnail-default.jpg" />';
}
?>
next posts link
投稿の次のセットへのリンクを表示します。
Codexマニュアル 関数リファレンス/next posts link
パラメーター
<?php next_posts_link( $label, $max_pages ); ?>
用例
WP_Query を使ってループさせた場合、next_posts_link() 関数に $max_pages パラメータを指定してください。
総ページ数を取得するにはカスタム WP_Query オブジェクトの 'max_num_pages' プロパティが使えます。
<?php
// "paged" パラメータを決定(静的フロントページ内のクエリなら 'page' を使う)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
// クエリ
$the_query = new WP_Query( 'cat=1&paged=' . $paged );
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php
// ループ
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php
// next_posts_link() に max_num_pages を指定して使う
next_posts_link( 'Older Entries', $the_query->max_num_pages );
previous_posts_link( 'Newer Entries' );
?>
<?php
// クエリとページネーションをクリーンアップ(メインクエリを再設定)
wp_reset_postdata();
?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
previous posts link
投稿の一つ前のセットへのリンクを表示。
Codexマニュアル 関数リファレンス/previous posts link
パラメーター
<?php previous_posts_link( $label ); ?>
用例
<?php previous_posts_link(); ?>
the post
ループを次の投稿へ進めます。
次の投稿を取得して、それを「現在の投稿」としてセットアップし、ループの 'in the loop' プロパティを true にします。
Codexマニュアル 関数リファレンス/the post
パラメーター
<?php the_post(); ?>
用例
<?php
if ( have_posts() ) {
while ( have_posts() ) {
the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php }
}
?>
the permalink
ループ の中で処理されている投稿の パーマリンク の URL を表示します。
このタグは ループ 内で使用されなければならず、一般的に各投稿のパーマリンクを表示するときに利用します。
このテンプレートタグは処理されている投稿のパーマリンクを表示するだけです。
そのため、あなたのブログにある任意の投稿のパーマリンクを表示するために使用することは出来ません。
Codexマニュアル 関数リファレンス/the permalink
パラメーター
<?php the_excerpt(); ?>
用例
投稿のタイトルをリンクテキストとしてパーマリンクを作成します。
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
the excerpt
このテンプレートタグ the_excerpt()
は、現在の投稿の抜粋を、文末に [...](角括弧+三点リーダー)をつけて表示します。
Codexマニュアル 関数リファレンス/the excerpt
パラメーター
<?php the_excerpt(); ?>
用例
アーカイブページ (is_archive()
で判定) またはカテゴリーページ (is_category()
で判定) 表示時に、the_content()
タグの替わりに the_excerpt()
を用いて抜粋文を表示する例です。
<?php if ( is_category() || is_archive() ) {
the_excerpt();
} else {
the_content();
} ?>
the title
現在の投稿のタイトルを表示、あるいは返します。必ずループの中で使用してください。ループの外では get_the_title() を使います。
Codexマニュアル 関数リファレンス/the title
パラメーター
<?php the_title( $before, $after, $echo ); ?>
<?php the_title( '<h3>', '</h3>' ); ?>
カスタム投稿タイプ
add post type support
指定された投稿タイプが特定の機能をサポートすることを登録。
Codexマニュアル 関数リファレンス/add post type support
パラメーター
<?php add_post_type_support( $post_type, $supports ) ?>
用例
// 固定ページ(投稿タイプ)に 抜粋 のサポートを追加
<?php
function my_custom_init() {
add_post_type_support( 'page', 'excerpt' );
}
add_action('init', 'my_custom_init');
?>
固定ページ
カスタムフィールド (postmeta)
get post custom
指定した記事や固定ページから、すべてのカスタムフィールドの情報を配列で取得します。
Codexマニュアル 関数リファレンス/get post custom
パラメーター
カスタムフィールドの配列からデータを取得する。
<?php get_post_custom( $post_id ); ?>
用例
変数 $custom_fields に 現在の 投稿のすべてのカスタムフィールド情報を(多次元の)配列で取得します。
<?php $custom_fields = get_post_custom(); ?>
ID 72 の投稿から my_custom_field というキーを持つすべてのカスタムフィールドの値を取得し出力します。
<?php
$custom_fields = get_post_custom( 72 );
$my_custom_field = $custom_fields[ 'my_custom_field' ];
foreach ( $my_custom_field as $key => $value ) {
echo $key . " => " . $value . "<br />";
}
?>
カテゴリー、タグ、タクソノミー関数
カテゴリー
get category by slug
カテゴリーのスラッグからカテゴリーオブジェクトを取得します。 見つからなければ false を返します。
Codexマニュアル 関数リファレンス/get category by slug
パラメータ
<?php get_category_by_slug( $slug ); ?>
用例
<?php
$idObj = get_category_by_slug( 'category-slug ');
$id = $idObj->term_id;
?>
// カテゴリースラッグを指定して取得したオブジェクトからカテゴリー名を取得。
// HTMLタグのエスケープ処理して出力する。
<?php echo esc_html(get_category_by_slug($sidebar_cat_name)->name); ?>
get term link
指定された(タクソノミー)タームのアーカイブページへのパーマリンク(URL)を返します。 タームが存在しないときは WP_Error オブジェクトを返します。
Codexマニュアル 関数リファレンス/get term link
パラメータ
<?php get_term_link( $term, $taxonomy ); ?>
用例
$terms = get_terms( 'species' );
echo '<ul>';
foreach ( $terms as $term ) {
// この $term はオブジェクトなので、$taxonomy を指定しなくてよい。
$term_link = get_term_link( $term );
// エラーなら次のタームへ進む。
if ( is_wp_error( $term_link ) ) {
continue;
}
// リンクを取得できたのでプリントアウトする。
echo '<li><a href="' . esc_url( $term_link ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
is category
記事がカテゴリーに属しているかチェック。
カテゴリーアーカイブが表示されているかチェックします。
TRUE または FALSE を返すブール関数です。
Codexマニュアル 関数リファレンス/is category
パラメータ
<?php is_category($category); ?>
用例
is_category();
// 任意のカテゴリーアーカイブが表示されているとき
is_category('9');
// カテゴリー ID が 9 のアーカイブが表示されているとき
is_category('Stinky Cheeses');
// カテゴリー名 "Stinky Cheeses" のアーカイブが表示されているとき
is_category('blue-cheese');
// カテゴリースラッグ "blue-cheese" のアーカイブが表示されているとき
is_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) );
// カテゴリー ID が 9、スラッグが "blue-cheese"、カテゴリー名が "Stinky Cheeses"、のいずれかのアーカイブが表示されているとき。
single cat title
カテゴリーまたはタグアーカイブがクエリされているときに使用すると、ページタイトル(カテゴリー名またはタグ名)を表示または返します。 従って、この関数が使えるのはループの外側においてのみです。
Codexマニュアル 関数リファレンス/single cat title
パラメータ
<?php single_cat_title( $prefix, $display ); ?>
// $prefix:タイトルの前に出力するテキスト
用例
"Currently browsing " に続けてカテゴリータイトルを表示します。
<p><?php single_cat_title('Currently browsing '); ?>.</p>
the content
現在の投稿の本文を出力します。(記事を出力する。)
このテンプレートタグはループの中で使わなければなりません。
本文中に <!--more--> クイックタグがある場合、先頭からそのクイックタグまでの内容のみを抜粋として表示します。
ただし単一投稿ページ(パーマリンクで投稿を特定したページ)では、抜粋のみでなく本文をすべて表示します。
the_content() テンプレートタグは <!--more--> の表示方法を決めるパラメータを受け取り、投稿の全文を「続けて読む」ためのリンクを表示する、という設計になっています。
Codexマニュアル 関数リファレンス/the content
パラメータ
<?php the_content( $more_link_text, $stripteaser ); ?>
用例
この例は投稿の本文を表示します。
もし <!--more--> クイックタグが使われていたら more リンクのテキストに "Read more..." を使います。
<?php the_content('Read more...'); ?>
WordPressループでコンテンツを出力する。
<?php
if (have_posts()) :
while (have_posts()) :
the_post();
the_content();
endwhile;
endif;
?>
フィルター
アクション
add_action
特定のアクションに関数をフックします。
Codexマニュアル 関数リファレンス/add action
パラメータ
<?php add_action( $hook, $function_to_add, $priority, $accepted_args ); ?>
用例
function email_friends( $post_ID ) {
$friends = 'bob@example.org, susie@example.org';
wp_mail( $friends, "sally's blog updated", 'I just put something on my blog: http://blog.example.com' );
return $post_ID;
}
add_action( 'publish_post', 'email_friends' );
add filter
指定したフィルターフックに、関数を登録。
Codexマニュアル 関数リファレンス/add filter
パラメーター
<?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>
用例
// コラムカテゴリーのみコメントできるようにする。
function comments_allow_only_column($open, $post_id) {
if (!in_category('column')) {
$open = false;
}
return $open;
}
add_filter('comments_open', 'comments_allow_only_column', 10, 2);
ショートコード
add shortcode
新しいショートコードハンドラ関数を登録。
Codexマニュアル 関数リファレンス/add shortcode
パラメーター
<?php add_shortcode( $tag , $func ); ?>
用例
// ショートコードタグ用のフックを追加。
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
shortcode atts
指定の規定値に対し、配列の次に指定の値を返す。
ユーザーがショートコードに指定した属性を、予め定義した属性と結合し、必要に応じてデフォルト値をセットします。
結果は配列で、キーが予め定義された属性、値が指定された属性値を結合したものになります。
デフォルトパラメーターを基準として、そこに含まれているキーがショートコードから渡されたキーと一致するときにのみデフォルトパラメーターを上書きした配列を返す。
Codexマニュアル 関数リファレンス/shortcode atts
パラメータ
<?php shortcode_atts( $pairs , $atts, $shortcode ); ?>
用例
結合されフィルターされた属性のリスト。
function bartag_func( $atts ) {
$atts = shortcode_atts(
array(
'foo' => 'no foo',
'bar' => 'default bar',
), $atts, 'bartag' );
return 'bartag: ' . $atts['foo'] . ' ' . $atts['bar'];
}
add_shortcode( 'bartag', 'bartag_func' );
テーマ関数
get header
header.php テンプレートの読み込み。
現在のテーマディレクトリの header.php テンプレートファイルを読み込みます。
名前(name)を指定すると、指定したヘッダー header-{name}.php を読み込みます。
header.php ファイルがテーマに含まれていない場合は、デフォルトテーマの wp-includes/theme-compat/header.php
を読み込みます。
Codexマニュアル 関数リファレンス/get header
パラメーター
<?php get_header( $name ); ?>
用例
<?php get_header(); ?>
<h2>Error 404 - Not Found</h2>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
get sidebar
sidebar.php テンプレートの読み込み。
現在のテーマディレクトリの sidebar.php テンプレートファイルを読み込みます。
名前 ($name) を指定すると、対応するサイドバー sidebar-{name}.php を読み込みます。sidebar-{name}.php が存在しない場合は、かわりに sidebar.php を読み込みます。
sidebar.php ファイルがテーマに含まれていない場合は、デフォルトテーマの wp-includes/theme-compat/sidebar.php
からサイドバーを読み込みます。
Codexマニュアル 関数リファレンス/sidebar.php
パラメーター
<?php get_sidebar( $name ); ?>
用例
<?php get_header(); ?>
<h2>Error 404 - Not Found</h2>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
get footer
footer.php テンプレートの読み込み。
現在のテーマディレクトリの footer.php テンプレートファイルを 読み込みます 。 名前 (name) を指定すると、指定した footer-{name}.php を読み込みます。
footer.php ファイルがテーマに含まれていない場合は、デフォルトテーマの wp-includes/theme-compat/footer.php
を読み込みます。
Codexマニュアル 関数リファレンス/footer.php
パラメーター
<?php get_footer( $name ); ?>
用例
<?php get_header(); ?>
<h2>Error 404 - Not Found</h2>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
get search form
検索フォームを表示。
テーマの searchform.php ファイルを使用して検索フォームを表示します。無ければ WordPress に組み込みの検索フォームを表示します。
注: この searchform.php は、テンプレート階層に含まれる search.php ではありません。search.php は検索結果を表示するテンプレートです。
WordPressで独自の検索フォームを作るには、
searchform.php
search.php
の2つのファイルを作成する必要があります。
searchform.phpは検索フォームで、search.phpは検索結果を表示するページのファイルです。
Codexマニュアル 関数リファレンス/get search form
パラメーター
<?php get_search_form( $echo ); ?>
用例
ヘッダー領域に検索フォームを出力する。
<div id="header-widget-area">
<aside class="widget_search">
<?php echo get_search_form(); ?>
</aside><!-- .widget_search end -->
</div><!-- #header-widget-area end -->
get template part
任意のテンプレートを呼び出すためのテンプレートタグ。
get_header()は、get_template_part('header')に置き換えることができます。
テンプレートパーツをテンプレートへ読み込みます。これにより、テーマがコードのセクションを再利用すること、また子テーマが親テーマのセクションを置き換えることが容易になります。
テーマの $slug で指定したテンプレートパーツをインクルードします。$name が指定された場合は、そのパーツの個別版をインクルードします。テーマに {$slug}.php ファイルがなければ何もインクルードしません。
$name パラメータの値は、例えばファイル "{slug}-special.php" をインクルードしたければ "special" にします。
Codexマニュアル 関数リファレンス/get template part
パラメーター
<?php get_template_part( $slug ); ?>
<?php get_template_part( $slug, $name ); ?>
用例
page.phpの記事出力部分をcontent.phpとして部品化し、抜き出した部分でcontent.phpを呼び出す。
<article>
<header class="page-header">
<h1 class="page-title"><?php the_title(); ?></h1>
</header>
<section class="entry-content">
<?php the_content(); ?>
</section>
</article>
<?php
if (have_posts()) :
while (have_posts()) :
the_post();
get_template_part('content');
endwhile;
endif;
?>
get search query
サイト内検索を行ったときのクエリ文字列を取得します。検索クエリ文字列を HTML 属性に配置する場合は、安全のため esc_attr() を適用すべきです。
この関数はクエリ文字列を表示するのではなく返します。表示するには the_search_query() が使えます。
Codexマニュアル 関数リファレンス/get search query
パラメーター
<?php $search_query = get_search_query( $escaped ); ?>
用例
<?php echo get_search_query(); ?>
add image size
新しい画像サイズを登録
Codexマニュアル 関数リファレンス/add image size
パラメーター
<?php add_image_size( $name, $width, $height, $crop ); ?>
用例
add_image_size('large_thumbnail', 120, 120, true);
add_image_size('category_image', 658, 113, true);
add_image_size('pickup_thumbnail', 302, 123, true);
add theme support
テーマやプラグインが特定のテーマ機能をサポートすることを許可。
Codexマニュアル 関数リファレンス/add theme support
パラメーター
<?php add_theme_support( $feature, $arguments ); ?>
用例
function custom_theme_setup() {
add_theme_support( $feature, $arguments );
}
add_action( 'after_setup_theme', 'custom_theme_setup' );
header image
ヘッダーイメージのパスを表示する。
カスタムヘッダー機能で指定した画像のURLを出力する。
Codexマニュアル 関数リファレンス/header image
パラメーター
<?php header_image() ?>
用例
<section id="branding">
<img src="<?php header_image(); ?>" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" />
</section><!-- #branding end -->
post class
投稿コンテナ要素のクラスを表示します。
Codexマニュアル 関数リファレンス/post class
パラメーター
<?php post_class(); ?>
用例
<article <?php post_class(); ?>>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('large_thumbnail', array('alt' => the_title_attribute('echo=0'), 'title' => the_title_attribute('echo=0'))); ?>
</a>
<header class="entry-header">
<time pubdate="pubdate" datetime="<?php the_time('Y-m-d'); ?>" class="entry-date"><?php the_time(get_option('date_format')); ?></time>
<h1 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
</header>
<section class="entry-content">
<?php the_excerpt(); ?>
</section>
</article>
register nav menu
1つのカスタムナビゲーションメニューをカスタムメニューエディタへ登録します。
管理者はこれを使ってテーマで使用するカスタムメニューを作成できます。
カスタムメニュー機能の有効化を参照。
Codexマニュアル 関数リファレンス/register nav menu
パラメーター
<?php register_nav_menu( $location, $description ); ?>
用例
<?php
add_action( 'after_setup_theme', 'register_my_menu' );
function register_my_menu() {
register_nav_menu( 'primary', __( 'Primary Menu', 'theme-slug' ) );
}
?>
register sidebar
サイドバーをひとつ定義して ID を返します。
'widgets_init' アクションで呼び出してください。
ウィジットエリアの有効化を参照。
Codexマニュアル 関数リファレンス/register sidebar
パラメーター
<?php register_sidebar( $args ); ?>
<?php $args = array(
'name' => __( 'Sidebar name', 'theme_text_domain' ),
'id' => 'unique-sidebar-id',
'description' => '',
'class' => '',
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>' ); ?>
用例
add_action( 'widgets_init', 'theme_slug_widgets_init' );
function theme_slug_widgets_init() {
register_sidebar( array(
'name' => __( 'Main Sidebar', 'theme-slug' ),
'id' => 'sidebar-1',
'description' => __( 'Widgets in this area will be shown on all posts and pages.', 'theme-slug' ),
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
) );
}
wp nav menu
ナビゲーションメニューを表示します。
メニューは 管理画面 > 外観 > メニュー で作成できます。
Codexマニュアル 関数リファレンス/wp nav menu
パラメーター
<?php
$defaults = array(
'menu' => '',
'menu_class' => 'menu',
'menu_id' => '{メニューのスラッグ}-{連番}',
'container' => 'div',
'container_class' => 'menu-{メニューのスラッグ}-container',
'container_id' => '',
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'echo' => true,
'depth' => 0,
'walker' => '',
'theme_location' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
);
wp_nav_menu( $defaults );
?>
用例
<div class="access">
<?php wp_nav_menu(); ?>
</div>
フォーマット用関数
esc attr
参照文字をエンコード。
HTML 要素の属性(alt, value, title, class など)の値に出力する文字をエスケープする場合に使用。
(< > & " ' (小なり、大なり、アンパサンド、ダブルクォート、シングルクォート) 文字参照をエンコード。)
Codexマニュアル 関数リファレンス/esc attr
パラメーター
<?php $fname = esc_attr( $text ); ?>
用例
<?php $fname = ( isset( $_POST['fname'] ) ) ? $_POST['fname'] : ''; ?>
<input type="text" name="fname" value="<?php echo esc_attr( $fname ); ?>">
esc html
HTMLタグのエスケープ処理。(HTML ブロックをエスケープ)。
HTML で特別な意味を持つ文字(&、<、>、"、')をエスケープ(エンコード)して & や < のような文字参照(HTMLエンティティ)と呼ばれる表記にエンコード。 esc_html フィルターを通して出力。
Codexマニュアル 関数リファレンス/esc_html
パラメーター
<?php esc_html( $text ) ?>
用例
$html = esc_html( '<a href="http://www.example.com/">A link</a>' );
$html にはこの文字列が入ります: <a href="http://www.example.com/">A link</a> 上記文字列は、HTML 文書などでは次のように表示されます:
<a href="http://www.example.com/">A link</a>
esc url
テキストや属性などのURLを無害化する時に用いる関数です。
ホワイトリストに登録されているプロトコル (デフォルトでは、http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet) 以外のURLを拒絶し、無効なキャラクタを除外し、危険なキャラクタを削除します。
この関数はキャラクタをHTMLエンティティとしてエンコードし、 (X)HTML または XML ドキュメントを作成する時に用います。
アンド記号 (&) とシングルクォート (') はそれぞれ (&, ') という形に変換します。 この関数は非推奨となった clean_url() の代わりに用いるものです。
Codexマニュアル 関数リファレンス/esc url
パラメーター
<?php esc_url( $url, $protocols, $_context ); ?>
用例
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
その他の関数
管理メニューオプション
add options page
管理画面の設定メニューにサブメニューページを追加
Codexマニュアル 関数リファレンス/add options page
パラメーター
<?php
add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function);
?>
用例
add_action('admin_menu', 'my_plugin_menu');
function my_plugin_menu() {
add_options_page('My Options', 'My Plugin', 'manage_options', 'my-plugin.php', 'my_plugin_page');
}
wp nonce field
フォームへ hidden フィールドとして追加するために nonce を取得または表示します。
nonce フィールドは、フォームの内容が現在のサイトから来たものであり、他のサイトからではないということを認証するために使われます。
nonce は完全な保護を提供するものではありませんが、ほとんどの場合に有効な保護になります。
フォーム内で nonce フィールドを使うのはとても重要です。
Codexマニュアル 関数リファレンス/wp nonce field
パラメーター
<?php wp_nonce_field( $action, $name, $referer, $echo ) ?>
用例
フォーム内でアクションと nonce に名前をつけるとよいでしょう。
1 番目と 2 番目の引数に値を入れて、必要な hidden フィールドを表示します:
<form method="post">
<!-- some inputs here ... -->
<?php wp_nonce_field( 'アクションの名前', 'nonce フィールドの名前' ); ?>
</form>
オプション
get option
引数で指定されたWordPressのオプション情報を取得する。
options データベーステーブルから名前を指定してオプションの値を取得する安全な方法です。
指定するオプションが存在しない場合、または対応する値がない場合は、FALSE が返されます。
Codexマニュアル 関数リファレンス/get option
パラメーター
<?php get_option( $option, $default ); ?>
用例
// ブログタイトルを表示する
<h1><?php echo get_option( 'blogname' ); ?></h1>
// ブログで使用している文字セット(例えば UTF-8)を表示します。
<p>文字セット: <?php echo get_option( 'blog_charset' ); ?> </p>
// 管理者のメールアドレスを取得
<?php $admin_email = get_option( 'admin_email' ); ?>
// 管理画面「設定」→「一般」→「日付のフォーマット」を取得
<?php the_time(get_option('date_format')); ?>
コメント
have comments
ループで処理するコメントがあるかどうか判定します。
注意:comments_template() が呼び出されるまでは、この関数は "false" を返します。
もし comments_template() を呼び出す前にコメントの有無をチェックするなら、代わりに get_comments_number() を使ってください。
Codexマニュアル 関数リファレンス/have comments
パラメーター
<?php $have_comments = have_comments(); ?>
用例
comments.php テンプレートに基づいた例です。
コメントがあるときだけ、コメントのタイトル(他にも)を表示します:
<?php
if (post_password_required()) :
return;
endif;
?>
<section id="comments">
<?php
if (have_comments()) :
?>
<h1 id="comments-title">
<?php echo '「<em>' . get_the_title() . '</em>」 に' . get_comments_number() . '件のコメント'; ?>
</h1>
<ol class="commentlist">
<?php wp_list_comments('avatar_size=40'); ?>
</ol>
<?php
if (get_comment_pages_count() > 1 && get_option('page_comments')) :
?>
<nav class="navigation">
<ul>
<li class="nav-previous"><?php previous_comments_link('古いコメント'); ?></li>
<li class="nav-next"><?php next_comments_link('新しいコメント '); ?></li>
</ul>
</nav>
<?php
endif;
endif;
?>
<?php comment_form(); ?>
その他いろいろ
get query var
グローバル $wp_query オブジェクトの WP_Query クラス内の public query variableを取得する。
$wp_query
URL に基づきデーターベースから取得したデーターを保持するオブジェクト。
Codexマニュアル 関数リファレンス/get query var
パラメーター
<?php get_query_var( $var, $default ) ?>
用例
// 現在のページ送り番号を取得する
<?php $paged = get_query_var( 'paged', 1 ); ?>
<h1>現在表示中のページ: <?php echo (int) $paged; ?></h1>
home url
トップページのURLを取得する。
home_url テンプレートタグは、現在のブログのホーム URL を返します。
オプションで引数 $path の内容を付加して返すこともできます。
この関数は適切なプロトコルを判定します。
is_ssl() が有効な場合は "https"、それ以外の場合は "http" です。
引数 $scheme で "http" か "https" を指定すると、is_ssl() による判定は無視されます。
WordPressで ネットワークの作成 をしている場合は、代わりに network_home_url() を使ってください。
Codexマニュアル 関数リファレンス/home url
パラメーター
<?php home_url( $path, $scheme ); ?>
用例
トップページへのリンクを出力する。
<?php echo esc_url( home_url( '/' ) ); ?>
the time
現在の投稿の公開時刻を表示します。
投稿の公開時刻を取得するには get_the_time()を使います。
この関数はループ内で使用する必要があります。
Codexマニュアル 関数リファレンス/the time
パラメーター
<?php the_time( $d ); ?>
用例
トップページへのリンクを出力する。
// WordPress の時刻を表示します。
<p>Time posted: <?php the_time(); ?></p>
// 'g:i a' という文字列のパラメータを使用して時刻を表示します (例: 10:36 pm) 。
<p>投稿時刻: <?php the_time('g:i a'); ?></p>
// 'G:i' という24時間の形式で時刻を表示します (例: 17:52) 。
<p>投稿時刻: <?php the_time('G:i'); ?></p>
// 時間を日付のフォーマット 'Y年n月j日' で表示する (例: 2004年12月2日) 。
<div><?php the_time('Y年n月j日'); ?></div>
// 日付と時刻を表示します。
// 投稿日: 2007年6月17日 @ 7:19 am
<p>投稿日: <?php the_time('Y年n月j日'); ?> @ <?php the_time('g:i a'); ?></p>
query posts
ページ内のメインクエリを書き換えるために使うコードです。
(WordPressが投稿を表示するのに使用しているメインクエリーを置き換える手段。)
ループの前に記述し様々な条件で記事を呼び出す。
非推奨:
この関数はプラグインまたはテーマの中で使われることを想定されていません。
メインクエリーを変更するにはパフォーマンス面でも優れたより良いオプションが存在します。
query_posts を使うことでページ上のメインクエリーが置き換えられます。
そのため、ページの読み込み速度に影響を与え、最悪の場合、倍かそれ以上の処理が発生します。
Codexマニュアル 関数リファレンス/query posts
用例
<?php query_posts($query_string.'&posts_per_page=!' ?>
wp get attachment image src
添付された画像ファイルの"url"、"width"、"height"属性を配列として返す関数です。
Codexマニュアル 関数リファレンス/wp get attachment image src
用例
<?php wp_get_attachment_image_src( $attachment_id, $size, $icon ); ?>
<?php
$attachment_id = 8; // 添付ID
$image_attributes = wp_get_attachment_image_src( $attachment_id ); // returns an array
if( $image_attributes ) {
?>
<img src="<?php echo $image_attributes[0]; ?>" width="<?php echo $image_attributes[1]; ?>" height="<?php echo $image_attributes[2]; ?>">
<?php } ?>
条件分岐タグインデックス
is author
作成者別一覧ページかどうかを判断する。
(投稿者アーカイブページが表示されているかどうかをチェックします。)
Boolean 関数であり、TRUE または FALSE を返します。
Codexマニュアル 関数リファレンス/is author
パラメーター
<?php is_author($author); ?>
用例
is_author();
// 投稿者ページが表示されている場合の動作。
is_author('4');
// 投稿者 ID が「4」の投稿者が表示されている場合の動作。
is_author('Vivian');
// ニックネームが「Vivinan」である投稿者が表示されている場合の動作。
is_author('john-jones');
// ナイスネームが「john-jones」である投稿者が表示されている場合の動作。
is_author(array(4,'john-jones','Vivian'));
// 投稿者 ID が「4」、user_nicename が「john-jones」、または nickname が「Vivian」である投稿者が表示されている場合の動作。注: この配列機能はバージョン 2.5 で追加されました。
<?php
if (is_author()) :
echo esc_html(get_the_author_meta('display_name', get_query_var('author')));
else :
single_cat_title();
endif;
?>
is front page
サイトのフロントページが表示中かどうかを判定します。
これは TRUE または FALSE を返す真偽値型の関数です。
TRUE を返すのは、管理画面の 設定 > 表示設定 > フロントページの表示 に「最新の投稿」を選択していて最新の投稿ページが現在表示中の場合と、「固定ページ」を選択していて「フロントページ」に指定した固定ページが現在表示中の場合です。
Codexマニュアル 関数リファレンス/is front page
パラメータ
<?php is_front_page(); ?>
用例
トップページ表示中のみカスタムヘッダーを表示する。
<?php
if (is_front_page()) :
?>
<section id="branding">
<img src="<?php header_image(); ?>" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" />
</section><!-- #branding end -->
<?php
endif;
?>
is page
個別の固定ページを表示しているかどうかをチェックします。
(これは真偽値を返す関数であり、TRUE または FALSE を返します。)
このタグはループの前に使われる必要があり、ループ内では機能しません。
Codexマニュアル 関数リファレンス/is page
パラメータ
<?php is_page( $page ); ?>
用例
トップページ表示中のみカスタムヘッダーを表示する。
is_page();
// 何れかの個別の固定ページが表示されている場合。
is_page( 42 );
// ID が 42 の固定ページが表示されている場合。
is_page( 'Contact' );
// post_title が "Contact" である固定ページが表示されている場合。
is_page( 'about-me' );
// post_name(スラッグ)が "about-me" である固定ページが表示されている場合。
is_page( array( 42, 'about-me', 'Contact' ) );
// ID が 42 か、post_name が "about-me" か、post_title が "Contact" である固定ページが表示されている場合に true を返します。
is single
個別投稿のページ(または添付ファイルページ・カスタム投稿タイプの個別ページ)が表示されている場合かチェック。
固定ページには適用されない。
添付ファイルや固定ページを除く個別の投稿を表示しているかどうかをチェックします。
もし $post パラメータが指定されていれば、指定された投稿が表示中であることを追加でチェックします。
すべての投稿(種類を問わず)を対象とするには、is_singular() 関数を使ってください。
Codexマニュアル 関数リファレンス/is single
パラメータ
<?php is_single( $post ); ?>
用例
トップページ表示中のみカスタムヘッダーを表示する。
is_single();
// 任意の個別投稿のページが表示中。
is_single( '17' );
// ID 17 の投稿が表示中。
is_single( 17 );
// ID 17 の投稿が表示中。17という整数パラメータも使えます。
is_single( 'Irish Stew' );
// "Irish Stew" というタイトルの投稿が表示中。
is_single( 'beef-stew' );
// "beef-stew" というスラッグの投稿が表示中。
is_single( array( 17, 'beef-stew', 'Irish Stew' ) );
// ID が 17、スラッグが "beef-stew"、またはタイトルが "Irish Stew" のいずれかにあてはまる投稿が表示中。
// 配列を引数に使えるのは バージョン 2.5 からです。
is singular
is_single()、is_page() 、is_attachment() のいずれかが真である場合に true を返す。
個別の投稿を表示中であるかチェックします。以下の関数のいずれかが true を返すとき、個別の投稿を表示中です。
- is_single()
- is_page()
- is_attachment()
$post_types パラメータが指定された場合は、指定された投稿タイプのいずれかに対する クエリ であることを追加でチェックします。
Codexマニュアル 関数リファレンス/is singular
パラメータ
<?php is_singular( $post_types ); ?>
用例
投稿または固定ページでアイキャッチ画像が設定されている場合に、アイキャッチ画像を表示する。
if (is_singular() && has_post_thumbnail()) {
$image = get_the_post_thumbnail(null, 'category_image', array('id' => 'category_image'));
}