WordPressでよく使うテンプレートタグと条件分岐などまとめ
自分がWordPressテーマ制作時やカスタイマイズ時によく使うWordPressのテンプレートタグと条件分岐です。
ソースはこのサイトの情報ですが、よくまとめられているので拝借しました。
様々な場面で使用するので、リストにして管理しておくと作業がはかどりますよ。
良く使うWordPressのテンプレートタグ
ヘッダーパーツ読み込み
1
|
<?php
get_header();
?>
|
サイドバーパーツ読み込み
1
|
<?php
get_sidebar();
?>
|
フッターパーツ読み込み
1
|
<?php
get_footer();
?>
|
任意のパーツ読み込み
sample.phpの場合
1
|
<?php
get_template_part('sample’);
?>
|
サイトのホームURL
1
|
<?php
echo
home_url();
?>
|
現在表示しているページのURL
1
|
<?php
echo
the_permalink();?>
|
使用テーマディレクトリへのパス
1
|
<?php
echo
get_template_directory_uri();
?>
|
該当する記事リンク
1
|
<?php
the_permalink();
?>
|
該当するタイトル
1
|
<?php
the_title();
?>
|
該当するコンテンツ(記事)
1
|
<?php
the_content();
?>
|
該当する投稿日
1
|
<?php
the_time('Y年n月j日’);
?>
|
1
|
<?php
the_time('Y.m.d’);
?>
|
※「Y」大文字 → 「2014」、「y」小文字 → 「14」
※設定、一般、日付のフォーマットも関係
指定したカテゴリーのカテゴリーリストを表示(カテゴリーに親子要素がある場合)
1
|
<ul><?php
wp_list_categories(“title_li=&child_of=1");
?></ul>
|
親、子の要素があるカテゴリーに使用。
その他に様々な取得値があり、「&」を使ってカスタマイズ可能
詳細はこちら
ページ編集リンク
1
|
<?php
edit_post_link('このページを編集する’,
",
");
?>
|
WordPressにログイン時だけに表示される
該当記事の文章抜粋
1
|
<?php
the_excerpt();
?>
|
「function.php」に下記追加で表示する文字数も調整可
1
2
3
4
|
function
new_excerpt_mblength($length)
{
return
100;
}
add_filter('excerpt_mblength’,
'new_excerpt_mblength’);
|
カスタムフィールドの値の呼び出し
1
|
<?php
echo
get_post_meta($post->ID,
'カスタムフィールドの名前’,
true);
?>
|
カスタムフィールドに値がある場合のみ表示する
1
2
3
|
<?php
if(post_custom('任意の値’)):
?>
<?php
echo
post_custom('任意の値’);
?>
<?php
endif;
?>
|
良く使うWordPressの条件分岐
コンテンツ(固定ページ)※テーマ編集で投稿記事を表示するのにも使う
1
2
3
|
<?php
if(have_posts()):
while(have_posts()):
the_post();
?>
<?php
the_content();
?>
<?php
endwhile;
endif;
?>
|
特定のカテゴリの記事一覧
1
2
3
4
5
6
7
|
<?php
$posts
=
get_posts('numberposts=100&category=5’);
global
$post;
?>
<?php
if($posts):
foreach($posts
as
$post):
setup_postdata($post);
?>
<li><a
href=“<?php
the_permalink();
?>“><?php
the_title();
?></a></li>
<?php
endforeach;
endif;
?>
|
特定のカテゴリーや固定ページに表示したりしなかったり
1
2
3
4
5
|
<?php
if(is_home()):
?>
<img src=“<?php
bloginfo('template_url’);
?>/images/gra_main.jpg"
width=“960"
height=“300"
alt=“"
/>
<?php
else:
?>
<img src=“<?php
bloginfo('template_url’);
?>/images/gra_news.jpg"
width=“960"
height=“70"
alt=“"
/>
<?php
endif;
?>
|
※if(is_home()を変えれば他にも流用できる
※endif;で「 else:(それ以外は)」を省ける
固定ページやカテゴリーなどの条件分岐で使えるもの
- is_home() → ホーム
- is_front_page() → フロントページ
- is_single() → 投稿記事(全て)
- is_single(3) → 投稿記事(特定)
- is_single(array(3,10,259)) → 投稿記事(複数)
- is_page() → 固定ページ(全て)
- is_page(42) → 固定ページ(特定)
- is_page(array(42,54,6)) → 固定ページ(複数)
- in_category() → カテゴリー(コンテンツの表示非表示はこっち)
- in_category(9) → カテゴリー(特定)
- is_category() → カテゴリー(リストの取得関連はこっち全て)
- is_category(9) → カテゴリー(特定)
- is_category(array(1,2,3)) → カテゴリー(複数)
- !is_category(array(4,5,6)) → カテゴリー(複数除外)
- is_category(‘blue-cheese’) → カテゴリースラッグ
- is_tag() → タグを表示
- is_tag(‘aaa’) → aaaタグの表示
- is_tag(array(‘sharp’,’mild’,’extreme’)) → 複数のタグの表示
- has_tag(‘aaa’) → aaaタグに限定
- is_author(4) → 作成者
- is_search() → 検索結果ページ
- is_404() → 404ページ
- is_day() → 日にちアーカイブ
- is_month() → 月アーカイブ
- is_year() → 年アーカイブ
※is_category()とin_category()の違い
参考:http://100-art-toe.sakura.ne.jp/zukai-wp/593
2つ以上のオリジナル条件分岐を設置する
PHPの条件分岐の「elseif」を使って複数の分岐を作る。この場合、各条件分岐の始まりと終わり「}」と「{」を付けて、それぞれを結合し1つの条件分岐文となるようにする。
1
2
3
4
5
6
7
8
9
10
|
<?php
if(in_category(array(1,2,3))):
{
?>
カテゴリーIDが1、2、3の時に表示する
<?php
}
elseif(in_category(array(4,5,6))):
{
?>
カテゴリーIDが4、5、6の時に表示する
<?php
}
elseif(in_category(array(7,8,9))):
{
?>
カテゴリーIDが7、8、9の時に表示する
<?php
}
endif;
?>
|
URL(パーマリンク)で条件分岐させる
1
2
3
4
5
6
|
<?php
$url
=
$_SERVER['REQUEST_URI’];
?>
<?php
if(strstr($url,'sample’)==true):
?>
<?php
elseif(strstr($url,'test’)==true):
?>
<?php
else:
?>
URLにsampleとtestが含まれていない場合にココが表示される
<?php
endif;
?>
|
記事の昇順・降順に並べる
1
2
3
4
5
6
7
8
|
<ul class=“newslist">
<?php
query_posts($query_string
.'&order=desc’);
?>
<?php
query_posts('posts_per_page=5’);
?>
<?php
if
(
have_posts()
)
:
while
(
have_posts()
)
:
the_post();
?>
<li><span class=“date"><?php
the_time('Y.n.j’);
?></span> <a
href=“<?php
the_permalink();
?>“
title=“<?php
the_title();?>“><?php
the_title();?></a></li>
<?php
endwhile;
endif;
?>
<?php
wp_reset_query();
?>
</ul>
|
昇順・降順命令 → リスト取得
1
2
|
<?php
query_posts($query_string
.'&order=asc’);
?>
<?php
if(have_posts()):
while(have_posts()):
the_post();
?>
|
※昇順:asc
※降順:desc
特定のカテゴリを除外・非表示
1
|
<?php
query_posts($query_string
.
'&cat=-5’);
?>
|
※ID・スラッグ名の前に「-」マイナスを付ける
昇順・降順命令 → 表示記事数設定
1
2
3
|
<?php
query_posts($query_string
.'&order=desc’);
?>
<?php
query_posts('posts_per_page=5’);
?>
<?php
if
(
have_posts()
)
:
while
(
have_posts()
)
:
the_post();
?>
|
※表示記事数設定 → 昇順・降順命令 だと表示記事数設定が無効
カテゴリーのあらゆる情報を取得
1
2
3
4
5
|
<?php
$cat
=
get_the_category();
$cat
=
$cat[0];
?>
<div class=“<?php
echo
$cat->category_nicename;
?>“>
|
※class名がカテゴリースラッグになる
※取得されたものに投稿によってスタイルを変えられる
画像にも応用できる
1
|
<img src=“<?php
echo
get_template_directory_uri();
?>/img/topics_icon_<?php
echo
$cat->category_nicename;
?>.gif"
alt=“<?php
echo
$cat->cat_name;
?>“
/>
|
※各カテゴリーに該当する画像を用意して1部分をスラッグ名で区別して、そこを差し替える
※altはカテゴリー名を取得
取得できる情報
- cat_ID → 記事のカテゴリーID
- cat_name → 記事のカテゴリー名
- category_nicename → 記事カテゴリーのカテゴリースラッグ
- category_description → 記事のカテゴリー説明文
- category_parent → 記事の親カテゴリーにあたるカテゴリーのID
- category_count → カテゴリーが使われている回数
公開から7日以内の記事に「NEW」アイコンを表示
1
2
3
4
5
6
7
|
<?php
// アイコン出力
$days
=
7;
$today
=
date('U’);
$entry
=
get_the_time('U’);
$sa
=
date('U’,($today
–
$entry))/86400;
if(
$days
>
$sa
){
echo
“<span class="new“>New</span>";
}
?>
|
現在の表示しているカテゴリーの関連記事情報を取得して表示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
$categories
=
get_the_category($post->ID);
$category_ID
=
array();
foreach($categories
as
$category):
array_push(
$category_ID,
$category
->
cat_ID);
endforeach
;
$args
=
array(
'posts_per_page’=>
0,
//表示する記事数
'category__in’
=>
$category_ID,
);
$st_query
=
new
WP_Query($args);
?>
<?php
if(
$st_query
->
have_posts()
):
?>
<?php
while
($st_query
->
have_posts())
:
$st_query
->
the_post();
?>
<li><a
href=“<?php
the_permalink();
?>“><?php
the_title();
?></a></li>
<?php
endwhile;
?>
<?php
else:
?>
<p>関連記事は現在ありません。</p>
<?php
endif;
wp_reset_postdata();
?>
</ul>
<?php
endif;
?>
|
PCとスマホの表示するしない
1
2
3
4
5
|
<?php
if
(
wp_is_mobile()
)
:
?>
// モバイル用コンテンツ
<?php
else:
?>
// PC用コンテンツ
<?php
endif;
?>
|