The following two tabs change content below.
小澤朋子
Web(ワードプレス)をもっと活かす方法や利用する方法をお伝えしています(^-^)/ Webの活用方法をもっと知って、発信し続ける人を応援します!

WordPressテーマをカスタマイズする時、似たような関数でよく迷う@「ノマド」な主婦Toroです。

WordPressって、使用できるテンプレートタグ(Wordpress関数)やphpの関数など含めて、よく忘れますよね?

っていうか、似たような名前や、似たような処理が多く、逆に何使ったらいいの??

そして、Google先生に聞いても、様々な答えが返ってきますね。。

もう。。って何回もやってるうちに何らかの関数に落ち着くんですが。。

今回は、Wordpressのカスタマイズする時によく使う関数たちを紹介します。

特に、テーマをカスタマイズする時によく使用する関数の覚書(備忘録)を残しておきます!

シロクマ先生
このページをブックマークしておけば
関数に迷ったとき助かるよ!
シロクマ先生
ほんと。。
似たようなの多いよね。。。



カテゴリー&カスタム投稿&タクソノミー

the_category()
このテンプレートタグは、現在の投稿ページに属するカテゴリーへのリンクの表示。
※必ず、ループの中で使用する。

[php]<?php the_category( $separator, $parents, $post_id ); ?>[/php]

 

get_the_category()
オブジェクト(カテゴリー)の配列を返す。
各オブジェクトは現在の投稿が属するカテゴリーです。
このタグはパラメータとして投稿 ID を渡すことで、ループの外でも使うことが可能。

[php]<?php the_category( $separator, $parents, $post_id ); ?>[/php]

また、カスタムタクソノミー(カスタム分類)の場合は get_the_termsを使用する。

get_the_terms()
このテンプレートタグは、PostIDを指定して、その投稿のページに属するオブジェクト(配列)を取得。
また、タームが付いていない投稿の場合は falseが返るため、空の配列にはならない。

[php]<?php get_the_terms( $id, $taxonomy ); ?>[/php]

get_the_term_list()
このテンプレートタグは、PostIDを指定して、タクソノミーの情報を HTMLに編集された形で取得できる。
また、カスタムタクソノミーの指定できる。

[php]<?php get_the_term_list( $id, $taxonomy, $before, $sep, $after ) ?>[/php]

wp_list_categories()
このテンプレートタグは、()内にいくつかの条件を指定して、条件に合致したカテゴリまたは、タクソノミーのリンク付きカテゴリーリストを表示する。
テンプレートタグ/wp list categories
参考: wp_list_categories() は、WordPress 2.1 で非推奨となった list_cats() および wp_list_cats() の後継。

リンク付きでない情報が必要な場合は、get_categories() を使用する。

[php]<?php wp_list_categories( $args ); ?>[/php]

get_categories()
このテンプレートタグも、()内にいくつかの条件を指定して、問い合わせパラメータにマッチするカテゴリーのオブジェクトを配列として返す。
問い合わせパラメータの内容は wp_list_categories とほぼ同じで、クエリ文字列形式でも配列形式でも渡すことができる。

[php]<?php $categories = get_categories( $args ); ?>[/php]

 

get_category_link()
このテンプレートタグは、()内にカテゴリIDを入れ、カテゴリ名とリンクを表示する。
指定したカテゴリー ID の正しい URL(カテゴリーアーカイブページへのリンク)を PHP の値として返します。

[php]<?php get_category_link( $category_id ); ?>
<!– このカテゴリーへのリンクを出力 –>
<a href="<?php echo esc_url( $category_link ); ?>" title="カテゴリー名">カテゴリー名</a>[/php]

プラグインやテーマで使う場合、setup_theme /en アクション以降で使用可能です。それより前(例えば plugins_loaded /en アクション)に使うと致命的なエラーを発生します。

get_cat_ID()
このテンプレートタグは、()内にカテゴリ名を入れ、カテゴリIDを取得する。

[php]<?php get_cat_ID( $cat_name ) ?>[/php]

 

get_category_by_slug()
このテンプレートタグは、()内にslugを入れ、カテゴリーオブジェクト(配列)を取得できる。
見つからなければ false を返す。

[php]<?php get_category_by_slug( $slug ); ?>[/php]
シロクマ先生
用途に応じて、使い分けてね!

テーマのページごとの分岐用関数一覧

is_page(TOP)
固定ページの場合(TOP)トップページの場合

is_category(4)
カテゴリーID 4のアーカイブページが表示されている場合。

in_category(5)
現在の投稿がカテゴリーID5に属する場合にtrueを返す。

[php] <?php if(is_page(TOP)) : ?>
<img src="<?php bloginfo(‘template_url’); ?>/images/○○○.jpg" width="950" height="294" />//TOPページのみ表示
<?php elseif(is_page(ABOUT)) : ?>
<img src="<?php bloginfo(‘template_url’); ?>/images/○○○.jpg" width="950" height="210" />//特定の固定ページにみ表示
<?php elseif(is_category(4)) : ?>
<?php $category = &get_category(get_query_var(‘cat’)); ?>
<img alt="" src="<?php bloginfo(‘template_url’); ?>/images/○○○.jpg" />//
<?php elseif(in_category(5)) : ?>
<?php $category = &get_category(get_query_var(‘cat’)); ?>
<img alt="" src="<?php bloginfo(‘template_url’); ?>/images/○○○.jpg" />//(in_category です。)
<?php endif; ?>
[/php]

is_single()
投稿の個別ページの表示

get_post_type()
指定した投稿または現在の投稿の、投稿タイプを取得します。
(カスタム投稿タイプ名も含まれる)

[php]<?php echo ‘投稿タイプは:’ . get_post_type( get_the_ID() ); ?>[/php]

is_post_type_archive()
現在のクエリが、指定された投稿タイプのアーカイブページ向けクエリかどうかをチェック。

[php]<?php is_post_type_archive( $post_types ); ?>[/php]

is_tax()
この条件分岐タグはカスタム分類のアーカイブページが表示されているかどうかをチェック。
もし $taxonomy パラメータを指定した場合、この関数はメインクエリがそのタクソノミーのためのものか、更にチェックします。

[php]<?php is_tax( $taxonomy, $term ); ?>[/php]

参考: カテゴリーアーカイブとタグアーカイブのとき、is_tax() は false を返す。
チェックするにはそれぞれ is_category() と is_tag() を使用。

また、特定の投稿にタクソノミーのタームが付いているかチェックするには, has_term() を使用。
指定されたカスタム分類名ページの場合のみ表示。

is_tag()
この条件分岐タグは、指定された投稿タグのアーカイブページが表示されている場合は true を、そうでない場合は false を返す。

[php]<?php if ( is_tag($tag) ) /* 処理をする */; ?>[/php]

is_search()
検索結果ページの場合のみ表示

is_404()
404ページの場合のみ表示

is_month() )
月別ページの場合

[php] <?php if(is_page()): ?>
//固定ページの場合のみ表示

<?php elseif(is_single()): ?>
<?php if ( get_post_type() === ‘投稿タイプ名’ ): ?>
//指定されたカスタム投稿タイプ名の場合のみ表示
<?php else: ?>
//投稿の個別ページの場合のみ表示
<?php endif; ?>

<?php elseif(is_category()): ?>
//カテゴリーページの場合のみ表示
<?php elseif(is_post_type_archive(‘カスタム投稿タイプ名’)): ?>
//指定されたカスタム投稿タイプ名のアーカイブページの場合のみ表示
<?php elseif(is_tax(‘カスタム分類名’)): ?>
//指定されたカスタム分類名ページの場合のみ表示
<?php elseif(is_tag()): ?>
//タグのアーカイブページtag.phpの場合のみ表示
<?php elseif(is_search()): ?>
//検索結果ページの場合のみ表示
<?php elseif(is_404()): ?>
//404ページの場合のみ表示
<?php else: ?>
//それ以外
<?php endif; ?>
[/php]

カスタム投稿の分類で分岐

カスタム投稿の分類で分岐する場合の具体的な使用方法

[php] <?php if ( is_object_in_term($post->ID, ‘topics’,’event’) ): ?>
//topicsがカスタム投稿名 eventが分類名
<img src="/images/ttl_topics" width="780" height="101" alt="トピックス " />
<?php endif; ?>
[/php]

投稿ページの分岐

page.phpの場合(ループ外で使用)

[php] <?php if (is_home()) {?>
<p></p>
<?php } else if (is_page(会員登録・お問合せ・資料請求)) { ?>
<h1><img src="/images/ttl_form.gif" width="500" height="27" alt="会員登録・お問合せ・資料請求" /></h1>
<?php } else{ ?>
<h1 class="p-title"><?php the_title(); ?></h1>
<?php } ?>
[/php]

指定固定ページのh1表示の変更方法

single.phpの場合(ループ外で使用)

[php] <?php if ( in_category(’16’) ) {
include(TEMPLATEPATH . ‘/sidebar-blog’);
} else if ( in_category(’17’) ) {
include(TEMPLATEPATH . ‘/sidebar-members.php’);
}
?>
[/php]

特定のカテゴリーの場合

特定のカテゴリーだった場合、違うサイドバーの表示

single.phpでターム別に表示を変更

[php] <?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php
$postID = get_the_ID();
$terms = get_the_terms($postID,’カスタム分類名’);
foreach ( $terms as $term ) {
$tslug = esc_html($term->slug);
}
?>
<?php endwhile; endif; ?>
[/php]

get_the_termsで指定したカスタム投稿から、ターム名=slugを取りに行く。

親子カテゴリー分岐

親カテゴリーと子カテゴリーを分岐で切り替える

[php] <?php if (is_category(‘news’)) { ?>
<h1>NEWS</h1>//親カテゴリーをスラッグ名で所得。親カテゴリーのみに表示
<?php } ?>

<?php if (cat_is_ancestor_of(5, $cat)) { ?>
<h1>イベント</h1>//ID5を親カテゴリーに持つ子カテゴリーのみに表示
<?php } ?>
[/php]

シロクマ先生
これで、Wordprssカスタマイズも楽々だね!