2020.03.16 Mon 2022.01.28
WordPressでよく使うテンプレートタグと関数
とにかくよく使うWordPressのテンプレートタグ&関数
実際にWordPressサイト100サイト以上を制作、カスタマイズをした経験をもとに、頻度高く使用するテンプレートタグと関数をまとめてみました。よく使うのでユーザー辞書ツールにはあらかじめ登録しているのですが、一覧でまとめておいても便利なため、各用途等別にまとめてみました。 WordPressタグはたくさんありますが、主に3種類に分類して紹介します。
参照するためのテンプレートタグ
URLを参照するためのテンプレートタグでURI参照のショートコードと同じです。
- WordPressがインストールされているドメイン参照のテンプレートタグ
<?php echo esc_url( home_url(‘/’) ); ?>
- WordPressのテーマフォルダのディレクトリを参照する場合
<?php echo get_template_directory_uri(); ?>
- WordPressの子テーマのディレクトリを参照する場合
<?php echo get_stylesheet_directory_uri(); ?>
- ページ編集画面を参照するショートコードタグとHTMLタグ
<?php edit_post_link(‘この記事を編集 )’,’<p>’,’</p>’); ?>
頻度高く使用するテンプレートタグは以上のようになりますが、ほかにもよく使うテンプレートタグがあればご一報ください。
テンプレートタグが直接使用できるのはPHPファイルだけ
分岐するためのテンプレートタグ
条件分岐するにはWordPressはPHPベースとなるため、if文で分岐させますが、条件分岐にもテンプレートタグを使用します。
- ページをIDやページ名を指定して表示内容を分岐する場合の関数
<?php if(is_page(array( 42, 'about-me', 'Contact' ))) : ?> <?php endif; ?>
// ID が 42 か、post_name が “about-me” か、post_title が “Contact” である固定ページが表示されている場合に true を返します。単一ページの場合はarray配列記述は不要です。 参照:WordPress Codex
- カテゴリーで表示内容を分岐する場合の関数
<?php If(in_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) ): ?> <?php endif; ?>
// カテゴリー ID が 9、スラッグが “blue-cheese”、カテゴリー名が “Stinky Cheeses”、のいずれかに属しているとき。 参照:WordPress Codex カテゴリー分岐は記事投稿ページが指定条件のカテゴリーに属しているかどうかを判別するための条件分岐です。single.phpで出力されるページと考えておけばいいかもしれません。
- アーカイブページで表示内容を分岐する場合の関数
<?php if(is_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) ): ?> <?php endif; ?>
// カテゴリー ID が 9、スラッグが “blue-cheese”、カテゴリー名が “Stinky Cheeses”、のいずれかのアーカイブが表示されているとき。 参照:WordPress Codex アーカイブページとはいわゆるカテゴリー一覧ページで、archive.phpで出力されるページと考えておけばいいかもしれません。
- トップページの分岐固定ページとブログページ
if ( is_front_page() && is_home() ) { // デフォルトホームページ } elseif ( is_front_page() ) { // 固定ペーシを使ったホームページ } elseif ( is_home() ) { // ブログページ } else { // それ以外 }
is_homeとis_fornt_pageは混同しやすいのですが、is_homeはブログページ(デフォルトでトップページに指定されている記事一覧ページ)、is_front_pageは固定ページでトップ指定した場合のページと別々の分岐になります
おおよそ上記の分岐を使用されば表示条件の制御はできそうです。
in_categoryは個別記事ページが属しているか確認し、is_categoryは記事一覧から特定のカテゴリーを抽出するときに使用します
ループするためのテンプレートタグ
ワードプレスでは色々と条件分岐を含んでループ処理が可能ですが、ここではわりと使用頻度が高いループ処理のテンプレートタグについて説明します。
- 記事投稿がある場合の条件分岐とループ処理
<?php if ( have_posts() ) { while ( have_posts() ) { the_post(); // // 投稿がここに表示される // } // end while } // end if ?>
ほとんどのテーマファイルで使用される分岐記述です。記事投稿があれば、投稿内容がなくなるまで投稿内容を表示させるループ処理を続ける意味にになります。 表示内容は、タイトルや日付、記事の抜粋など表示内容に応じて個別にカスタマイズする必要があります。
- カテゴリーやタクソノミーの条件を分岐して出力する場合
//$argsに配列として抽出条件を指定して代入させる //カテゴリーやスラッグ、投稿タイプや件数、表示順などを指定する $args = array( 'orderby' => 'meta_value_num', 'order' => $ordervalu, 'post_type' => 'post', 'category_name' => $cat_nam, 'posts_per_page' => 8, 'meta_key' => $metak ); // The Query $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { echo '<ul>'; while ( $the_query->have_posts() ) { $the_query->the_post(); echo '<li>' . get_the_title() . '</li>'; } echo '</ul>'; /* Restore original Post Data */ wp_reset_postdata(); } else { // no posts found }
ループについてはほぼ上記2つの方法で表示可能でしょう。ページャーなどは個別にプラグインや記述を追加していきます。
ループ処理は2つ覚えておけばほとんど対応可能
WordPressテンプレートタグのトレンドとバージョン
テンプレートタグとはWordPress関数ともいわれ、PHPバージョンとWordPress本体、WPテーマに関係して使用できるテンプレートタグが異なります。 PHPやWordPressのバージョンによってテンプレートタグやPHP記述にエラーが出たりするのはことのためです。 また、WPテーマ固有のテンプレートタグも存在するので注意が必要です。いかにバージョンの影響を受けないで、改修がしやすく機能の切り離しがしやすいかが、管理運用面で考えると、とても重要な気がします。 あまりにも内部の改修を連携づけてカスタイマイズしてしまうと、バージョンアップのタイミングでBANになることもあるでしょう。
ですので当社でもかなり簡素化した組み合わせを推奨してWordPressサイト導入をしています。
テンプレートタグも記述方法が変更される場合があります
function.phpに記述する関数
function.phpにはいろいろな記述が可能です。
PHPやWordPress関数、HTMLやJavaScriptを、WordPressの複数の読み込みタイミング別にコールすることができます。
ここでは、わりとよく使うWordPress関数を中心に紹介していきます。
メディア画像サイズの自動変更機能
- メディアからアップロードした画像が自動でリサイズされる
- メディアからアップロードした画像最大サイズが小さい
- add_filter(“big_image_size_threshold”, “__return_false”);
上記フィルターフックを追記することで、メディアからの画像アップロード再の自動縮小機能が解除され、画像の縦横比を維持したままアップロードできます。
余分なJQueryを読み込ませない
- 使用しないWordPressのJQueryファイルを読み込ませたくない
- 使用しないWordPressのJQueryファイルを読み込ませないようにしてページパフォーマンスをアップしたい
- function dis_load_jquery() {
wp_deregister_script(‘jquery’);
}
add_action( ‘wp_enqueue_scripts’, ‘dis_load_jquery’ );
上記アクションフックを追記することで、メディアからの画像アップロード再の自動縮小機能が解除され、画像の縦横比を維持したままアップロードできます。
function.phpはWPテーマを変更すると再記述が必要になる
掲載情報につきましては当社が独自に調査、検証および収集した情報です。
情報の妥当性や確実性を一切保証するものでなく、情報や内容が訂正や修正、変更されている場合があります。 よって、当社サイトの利用により生じたいかなる損害等についても運営側にて一切の責任を負いません。
掲載情報の修正・変更等をご希望の場合はお知らせください。