WordPressテーマをカスタマイズする時、似たような関数でよく迷う@「ノマド」な主婦Toroです。
WordPressって、使用できるテンプレートタグ(Wordpress関数)やphpの関数など含めて、よく忘れますよね?
っていうか、似たような名前や、似たような処理が多く、逆に何使ったらいいの??
そして、Google先生に聞いても、様々な答えが返ってきますね。。
もう。。って何回もやってるうちに何らかの関数に落ち着くんですが。。
今回は、Wordpressのカスタマイズする時によく使う関数たちを紹介します。
特に、テーマをカスタマイズする時によく使用する関数の覚書(備忘録)を残しておきます!
関数に迷ったとき助かるよ!
似たようなの多いよね。。。
目次
カテゴリー&カスタム投稿&タクソノミー
the_category()
このテンプレートタグは、現在の投稿ページに属するカテゴリーへのリンクの表示。
※必ず、ループの中で使用する。
get_the_category()
オブジェクト(カテゴリー)の配列を返す。
各オブジェクトは現在の投稿が属するカテゴリーです。
このタグはパラメータとして投稿 ID を渡すことで、ループの外でも使うことが可能。
また、カスタムタクソノミー(カスタム分類)の場合は get_the_termsを使用する。
get_the_terms()
このテンプレートタグは、PostIDを指定して、その投稿のページに属するオブジェクト(配列)を取得。
また、タームが付いていない投稿の場合は falseが返るため、空の配列にはならない。
get_the_term_list()
このテンプレートタグは、PostIDを指定して、タクソノミーの情報を HTMLに編集された形で取得できる。
また、カスタムタクソノミーの指定できる。
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 とほぼ同じで、クエリ文字列形式でも配列形式でも渡すことができる。
get_category_link()
このテンプレートタグは、()内にカテゴリIDを入れ、カテゴリ名とリンクを表示する。
指定したカテゴリー ID の正しい URL(カテゴリーアーカイブページへのリンク)を PHP の値として返します。
<!– このカテゴリーへのリンクを出力 –>
<a href="<?php echo esc_url( $category_link ); ?>" title="カテゴリー名">カテゴリー名</a>[/php]
プラグインやテーマで使う場合、setup_theme /en アクション以降で使用可能です。それより前(例えば plugins_loaded /en アクション)に使うと致命的なエラーを発生します。
get_cat_ID()
このテンプレートタグは、()内にカテゴリ名を入れ、カテゴリIDを取得する。
get_category_by_slug()
このテンプレートタグは、()内にslugを入れ、カテゴリーオブジェクト(配列)を取得できる。
見つからなければ false を返す。
テーマのページごとの分岐用関数一覧
is_page(TOP)
固定ページの場合(TOP)トップページの場合
is_category(4)
カテゴリーID 4のアーカイブページが表示されている場合。
in_category(5)
現在の投稿がカテゴリーID5に属する場合にtrueを返す。
<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()
指定した投稿または現在の投稿の、投稿タイプを取得します。
(カスタム投稿タイプ名も含まれる)
is_post_type_archive()
現在のクエリが、指定された投稿タイプのアーカイブページ向けクエリかどうかをチェック。
is_tax()
この条件分岐タグはカスタム分類のアーカイブページが表示されているかどうかをチェック。
もし $taxonomy パラメータを指定した場合、この関数はメインクエリがそのタクソノミーのためのものか、更にチェックします。
参考: カテゴリーアーカイブとタグアーカイブのとき、is_tax() は false を返す。
チェックするにはそれぞれ is_category() と is_tag() を使用。
また、特定の投稿にタクソノミーのタームが付いているかチェックするには, has_term() を使用。
指定されたカスタム分類名ページの場合のみ表示。
is_tag()
この条件分岐タグは、指定された投稿タグのアーカイブページが表示されている場合は true を、そうでない場合は false を返す。
is_search()
検索結果ページの場合のみ表示
is_404()
404ページの場合のみ表示
is_month() )
月別ページの場合
//固定ページの場合のみ表示
<?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]
最新記事 by 小澤朋子 (全て見る)
- 私の「働き方改革」in富士市 - 2019年8月16日
- 子供プログラミングスクラッチ(Scratch)のくまたいほう! - 2019年7月16日
- 【第3回目終了】WordPressスタートアップ1DAYワークin富士宮(富士) - 2018年7月8日