WordPress関数一覧まとめ【Part1】テーマ制作者向け完全ガイド|ループ・テンプレタグ・画像・ナビゲーション

WordPress関数大全 WordPress
この記事は約24分で読めます。

WordPressのテーマ制作において、最も重要なのは「関数を知っている」ことではありません。「どの関数を、どんな文脈で、どう安全に使うか」を理解することです。

この記事では、テーマ制作者が日常的に使うWordPress関数を、目的・仕組み・実装例の3つの視点から徹底的に解説します。「名前は知っているけれど、正しい使い方があいまい」という状態を解消し、自信を持ってテーマ開発ができるようになることを目指しています。

この記事は3部構成のPart1です。Part2ではプラグイン開発の設定画面と管理機能、Part3ではAjax/REST APIとセキュリティについて解説します。

  1. 1. テーマ制作の鉄則:Sanitize(入力整形)とEscape(出力エスケープ)
    1. Sanitize(サニタイズ)とは
    2. Escape(エスケープ)とは
      1. 実装例:タイトルを安全に表示する
  2. 2. ループ(The Loop)とWP_Query|投稿を表示する仕組み
    1. have_posts() / the_post()
      1. 基本のループ構造
    2. WP_Query
      1. 最新5件の投稿を取得する例
    3. wp_reset_postdata()
    4. get_posts()
    5. pre_get_posts
  3. 3. テンプレート読み込み関数|header/footer/パーツ分割
    1. get_header() / get_footer() / get_sidebar()
      1. 使用例
    2. get_template_part( $slug, $name = null, $args = array() )
      1. 変数を渡す例
  4. 4. 投稿情報のテンプレタグ|タイトル・本文・日時・著者
    1. the_title() / get_the_title()
    2. the_content() / get_the_content()
    3. the_excerpt() / get_the_excerpt()
    4. get_the_date() / get_the_modified_date()
    5. get_the_author_meta( $field )
  5. 5. URL・リンク生成|パーマリンクとサイトURL
    1. get_permalink() / the_permalink()
    2. home_url() / site_url() / admin_url()
    3. get_post_type_archive_link( $post_type )
  6. 6. アイキャッチ・画像関連|サムネイルとsrcset
    1. has_post_thumbnail() / the_post_thumbnail()
    2. get_the_post_thumbnail_url( $post_id, $size )
    3. wp_get_attachment_image( $attachment_id, $size, $icon, $attr )
    4. add_image_size( $name, $width, $height, $crop )
  7. 7. カテゴリ・タグ・タクソノミー表示
    1. get_the_category() / the_category()
    2. get_the_terms( $post_id, $taxonomy )
  8. 8. ナビゲーション|ページネーションと前後リンク
    1. the_posts_pagination()
    2. previous_post_link() / next_post_link()
  9. 9. メニュー・ウィジェット・サイドバー
    1. register_nav_menus() / wp_nav_menu()
    2. register_sidebar() / dynamic_sidebar()
  10. 10. body_class / post_class|CSS設計の要
    1. body_class()
    2. post_class()
  11. 11. 条件分岐(Conditional Tags)
  12. 12. スクリプト/スタイルのenqueue
    1. wp_enqueue_style() / wp_enqueue_script()
  13. 13. 翻訳(i18n)とテキスト出力
  14. 14. テーマカスタマイズ(Theme Support / Customizer)
    1. add_theme_support()
  15. まとめ

1. テーマ制作の鉄則:Sanitize(入力整形)とEscape(出力エスケープ)

テーマ制作で最も事故が起きやすいのは、ユーザーやデータベースから取得した値を、そのまま画面に出力してしまうことです。WordPressは多くのユーザーが様々な環境で使うCMSであり、悪意のある入力や予期しないデータが入ってくる可能性を常に考慮しなければなりません。

この問題に対処するための2つの原則が「Sanitize」と「Escape」です。

Sanitize(サニタイズ)とは

Sanitizeは入力時の整形処理です。フォームやURLパラメータから入ってきた値を、期待する形式に変換・制限します。たとえば、メールアドレスとして受け取った値に不正な文字が含まれていたら除去する、といった処理がこれに該当します。

代表的なサニタイズ関数:

  • sanitize_text_field() – テキストフィールド用。HTMLタグや改行を除去
  • sanitize_textarea_field() – 複数行テキスト用。改行は保持される
  • sanitize_email() – メールアドレス形式に整形
  • absint() – 絶対値の整数に変換(負の数は正の数になる)
  • sanitize_key() – 英小文字・数字・アンダースコア・ハイフンのみに制限

Escape(エスケープ)とは

Escapeは出力時の無害化処理です。データベースから取得した値や変数を画面に表示する直前に、その出力先の文脈に合わせて安全な形式に変換します。これにより、XSS(クロスサイトスクリプティング)攻撃を防ぎます。

代表的なエスケープ関数:

  • esc_html() – HTML本文に出力するテキスト用。<>をエンティティに変換
  • esc_attr() – HTML属性値に入れる場合。引用符などをエスケープ
  • esc_url() – URLを出力する場合。不正なプロトコルを除去
  • esc_js() – JavaScript内に出力する場合

基本原則は「サニタイズは早め、エスケープは遅め(出力直前)」です。入力時点でデータをクリーンにし、出力時点で文脈に合わせてエスケープする。この2段構えでセキュリティを確保します。

実装例:タイトルを安全に表示する

<h1><?php echo esc_html( get_the_title() ); ?></h1>

get_the_title()で取得したタイトルには、理論上どんな文字列が入っているかわかりません。esc_html()を通すことで、万が一スクリプトタグが含まれていても無害化されます。

2. ループ(The Loop)とWP_Query|投稿を表示する仕組み

WordPressにおける「ループ」とは、データベースから取得した投稿データを順番に処理して表示する仕組みのことです。ブログの記事一覧、アーカイブページ、検索結果など、複数の投稿を表示するあらゆる場面でループが使われます。

have_posts() / the_post()

目的:投稿があるかどうかを確認し、ループ内で次の投稿に進む

have_posts()は、表示すべき投稿がまだ残っているかどうかを真偽値で返します。the_post()は、次の投稿データをグローバル変数$postにセットし、テンプレタグが正しく動作するよう準備します。

この2つの関数を組み合わせることで、投稿を1件ずつ処理するwhileループが実現できます。WordPressテーマのほぼすべてのテンプレートファイルで、このパターンを目にすることになるでしょう。

基本のループ構造

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>
    <article class="post">
      <h2><?php the_title(); ?></h2>
      <div class="excerpt"><?php the_excerpt(); ?></div>
    </article>
  <?php endwhile; ?>
<?php else : ?>
  <p>記事が見つかりませんでした。</p>
<?php endif; ?>

ループの外側でif ( have_posts() )を使って、投稿が1件もない場合の処理も忘れずに記述しましょう。

WP_Query

目的:任意の条件で投稿を取得し、カスタムループを作成する

メインクエリ(URLに基づいてWordPressが自動的に実行するクエリ)とは別に、独自の条件で投稿を取得したい場合に使用します。たとえば、サイドバーに「最新5件の投稿」を表示したり、フッターに「人気記事ランキング」を出したりする場面で活躍します。

WP_Queryは非常に柔軟で強力なクラスです。投稿タイプ、カテゴリ、タグ、カスタムフィールド、日付、著者など、あらゆる条件を組み合わせて投稿を絞り込めます。

最新5件の投稿を取得する例

<?php
$args = array(
  'post_type'      => 'post',
  'posts_per_page' => 5,
  'orderby'        => 'date',
  'order'          => 'DESC',
);
$recent_query = new WP_Query( $args );

if ( $recent_query->have_posts() ) :
  while ( $recent_query->have_posts() ) : $recent_query->the_post();
?>
    <a href="<?php echo esc_url( get_permalink() ); ?>">
      <?php echo esc_html( get_the_title() ); ?>
    </a>
<?php
  endwhile;
  wp_reset_postdata();
endif;
?>

wp_reset_postdata()

目的:サブループ使用後にグローバル状態を元に戻す

これは地味ですが非常に重要な関数です。WP_Queryでサブループを実行すると、グローバル変数$postがサブループの最後の投稿を指した状態になります。この状態でメインコンテンツに戻ると、タイトルや日付が意図しない投稿のものになるという、非常に見つけにくいバグが発生します。

サブループを使ったら、必ず最後にwp_reset_postdata()を呼び出す。これを習慣にしてください。

get_posts()

目的:投稿を配列形式で取得する(表示より処理寄りの用途)

WP_Queryがループ処理に適しているのに対し、get_posts()は投稿オブジェクトの配列を直接取得したい場合に便利です。内部的にはWP_Queryを使用していますが、よりシンプルな書き方ができます。

<?php
$posts_array = get_posts( array( 'numberposts' => 3 ) );
foreach ( $posts_array as $p ) {
  echo esc_html( $p->post_title ) . '<br>';
}
?>

pre_get_posts

目的:メインクエリの条件を変更する

アーカイブページの表示件数を変えたい、特定のカテゴリを除外したい、といった場合に使用するフィルターフックです。新しいWP_Queryを作成するのではなく、WordPressが自動的に実行するメインクエリの条件を書き換えます。

これはfunctions.phpに記述します。

<?php
add_action( 'pre_get_posts', function( $query ) {
  // 管理画面では動作させない
  if ( is_admin() ) {
    return;
  }
  
  // メインクエリのみ対象
  if ( ! $query->is_main_query() ) {
    return;
  }
  
  // カテゴリアーカイブの表示件数を12件に
  if ( $query->is_category() ) {
    $query->set( 'posts_per_page', 12 );
  }
});
?>

重要な注意点:is_admin()is_main_query()のチェックを必ず入れてください。これを怠ると、管理画面の投稿一覧やウィジェットのクエリまで影響を受け、予期しない動作を引き起こします。

3. テンプレート読み込み関数|header/footer/パーツ分割

テーマの保守性を高める鍵は適切なファイル分割です。共通部分を別ファイルに切り出し、必要な箇所で読み込む。この仕組みを支えるのがテンプレート読み込み関数群です。

get_header() / get_footer() / get_sidebar()

目的:共通部品(ヘッダー、フッター、サイドバー)を読み込む

これらの関数は、それぞれheader.phpfooter.phpsidebar.phpを読み込みます。すべてのページで共通のHTML構造(<head>タグ、ナビゲーション、フッターのコピーライト表記など)を一元管理できます。

また、引数を渡すことで、バリエーションのあるテンプレートを読み込むこともできます。たとえばget_header( 'landing' )と書くと、header-landing.phpが読み込まれます。ランディングページ用にシンプルなヘッダーを用意したい場合などに便利です。

使用例

<?php get_header(); ?>

<main class="site-main">
  <!-- メインコンテンツ -->
</main>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

get_template_part( $slug, $name = null, $args = array() )

目的:再利用可能なパーツテンプレートを読み込む

ヘッダー・フッター・サイドバー以外の部品を分割するための関数です。記事カード、CTA(Call To Action)ブロック、著者情報ボックスなど、複数の場所で使い回すUI部品を別ファイルに切り出せます。

第1引数がベースのファイル名(スラッグ)、第2引数がバリエーション名です。たとえばget_template_part( 'parts/card', 'post' )と書くと、まずparts/card-post.phpを探し、なければparts/card.phpを読み込みます。

WordPress 5.5以降では第3引数$argsで変数を渡せるようになり、パーツテンプレートの再利用性が大幅に向上しました。

変数を渡す例

<?php
// 呼び出し側
get_template_part( 'parts/card', 'post', array(
  'show_date'   => true,
  'show_author' => false,
) );
?>

<?php
// parts/card-post.php 側
$show_date   = $args['show_date'] ?? true;
$show_author = $args['show_author'] ?? true;
?>

4. 投稿情報のテンプレタグ|タイトル・本文・日時・著者

投稿の各種情報を表示するための関数群です。「the_」で始まる関数は直接出力、「get_the_」で始まる関数は値を返すという命名規則を覚えておくと、関数選びに迷いません。

the_title() / get_the_title()

目的:投稿タイトルを表示/取得する

the_title()は即座に出力するため、前後に文字列を付けたい場合は引数で指定できます。一方、get_the_title()は値を返すので、変数に格納したり、他の関数に渡したりする場合に使います。

加工して出力する場合は、必ずesc_html()を通してください。

<h1><?php the_title(); ?></h1>

<!-- 前後にタグを付ける -->
<?php the_title( '<h1>', '</h1>' ); ?>

<!-- 取得して加工 -->
<h1><?php echo esc_html( get_the_title() ); ?></h1>

the_content() / get_the_content()

目的:投稿本文を表示/取得する

本文にはショートコード、埋め込みメディア、ブロックエディタのHTMLなど、様々なフィルター処理が適用されます。the_content()はこれらのフィルターをすべて適用した状態で出力するため、テーマでは基本的にこちらを使用します。

get_the_content()は生のコンテンツを返すため、フィルターを自分で適用する必要があります。特別な理由がない限り、the_content()を使いましょう。

<div class="entry-content">
  <?php the_content(); ?>
</div>

the_excerpt() / get_the_excerpt()

目的:投稿の抜粋を表示/取得する

抜粋は記事一覧やアーカイブページで使用されます。投稿編集画面で手動入力された抜粋があればそれを、なければ本文から自動生成されたものが使用されます。自動生成の場合、デフォルトで55語(英語基準)に切り詰められます。

<p class="excerpt"><?php echo esc_html( get_the_excerpt() ); ?></p>

get_the_date() / get_the_modified_date()

目的:投稿日/更新日を取得する

get_the_date()は公開日、get_the_modified_date()は最終更新日を返します。技術ブログなど、情報の鮮度が重要なサイトでは更新日の表示が有効です。

引数にフォーマット文字列を渡せます。ISO 8601形式(c)をdatetime属性に、表示用フォーマットを中身に使うのが一般的です。

<time datetime="<?php echo esc_attr( get_the_date( 'c' ) ); ?>">
  <?php echo esc_html( get_the_date() ); ?>
</time>

<!-- 更新日も表示 -->
<p>最終更新: <?php echo esc_html( get_the_modified_date() ); ?></p>

get_the_author_meta( $field )

目的:著者情報を取得する

著者の表示名、メールアドレス、ウェブサイト、自己紹介など、ユーザープロフィールの各フィールドを取得できます。よく使うフィールドはdisplay_name(表示名)、user_email(メールアドレス)、description(プロフィール文)です。

<p class="author">
  投稿者: <?php echo esc_html( get_the_author_meta( 'display_name' ) ); ?>
</p>

5. URL・リンク生成|パーマリンクとサイトURL

URLをハードコードすると、サイト移転やディレクトリ構成変更時に大量の修正が必要になります。WordPress関数を使えば、環境に応じた正しいURLを動的に生成できます。

get_permalink() / the_permalink()

目的:現在の投稿のパーマリンクを取得/出力する

投稿へのリンクを作成する際の基本関数です。パーマリンク設定に関係なく、正しいURLを返します。

<a href="<?php echo esc_url( get_permalink() ); ?>">
  <?php echo esc_html( get_the_title() ); ?>
</a>

home_url() / site_url() / admin_url()

目的:サイトの各種ベースURLを取得する

この3つの違いを理解しておくことが重要です:

  • home_url() – サイトの表示URL(訪問者がアクセスするURL)
  • site_url() – WordPressがインストールされているURL(サブディレクトリ構成で違いが出る)
  • admin_url() – 管理画面のURL

通常のリンク生成にはhome_url()を使用します。

<a href="<?php echo esc_url( home_url( '/contact/' ) ); ?>">お問い合わせ</a>

get_post_type_archive_link( $post_type )

目的:カスタム投稿タイプのアーカイブURLを取得する

カスタム投稿タイプを使用している場合、そのアーカイブページへのリンクを生成できます。

<a href="<?php echo esc_url( get_post_type_archive_link( 'book' ) ); ?>">
  書籍一覧
</a>

6. アイキャッチ・画像関連|サムネイルとsrcset

画像はサイトのパフォーマンスと見た目の両方に大きく影響します。WordPressは画像の自動リサイズとレスポンシブ対応(srcset生成)の仕組みを持っているので、それを活かした実装をしましょう。

has_post_thumbnail() / the_post_thumbnail()

目的:アイキャッチ画像の有無を確認/出力する

アイキャッチが設定されていない投稿もあるため、必ずhas_post_thumbnail()で確認してから出力します。the_post_thumbnail()<img>タグを出力し、自動的にsrcset属性も付与されます。

第1引数でサイズを指定できます。'thumbnail''medium''large''full'などの登録済みサイズ名、またはarray( 640, 360 )のような配列で指定します。

<?php if ( has_post_thumbnail() ) : ?>
  <figure class="post-thumbnail">
    <?php the_post_thumbnail( 'large' ); ?>
  </figure>
<?php endif; ?>

get_the_post_thumbnail_url( $post_id, $size )

目的:アイキャッチ画像のURLを取得する

背景画像として使用したい場合や、JavaScript用にURLだけ欲しい場合に使用します。

<?php
$thumb_url = get_the_post_thumbnail_url( get_the_ID(), 'large' );
if ( $thumb_url ) :
?>
  <div class="hero" style="background-image: url(<?php echo esc_url( $thumb_url ); ?>);">
    <!-- ヒーローセクション -->
  </div>
<?php endif; ?>

wp_get_attachment_image( $attachment_id, $size, $icon, $attr )

目的:添付ファイルIDから<img>タグを生成する

アイキャッチ以外の画像(カスタムフィールドに保存した画像IDなど)を出力する際に使用します。srcsetやalt属性も自動で付与されます。

<?php
$image_id = get_post_meta( get_the_ID(), 'gallery_image', true );
if ( $image_id ) {
  echo wp_get_attachment_image( $image_id, 'medium', false, array( 'class' => 'gallery-img' ) );
}
?>

add_image_size( $name, $width, $height, $crop )

目的:テーマ独自の画像サイズを登録する

デフォルトのサイズ(thumbnail、medium、large)では対応できないアスペクト比の画像が必要な場合、独自サイズを追加できます。functions.phpのafter_setup_themeアクションで登録します。

第4引数$cropをtrueにすると、指定サイズにトリミングされます。falseの場合は縦横比を維持したままリサイズされます。

<?php
add_action( 'after_setup_theme', function() {
  add_image_size( 'card-thumbnail', 640, 360, true );  // 16:9でトリミング
  add_image_size( 'hero-wide', 1920, 600, true );       // ヒーロー画像用
});
?>

7. カテゴリ・タグ・タクソノミー表示

投稿の分類情報を表示する関数群です。カテゴリやタグだけでなく、カスタムタクソノミーにも対応した汎用的な関数を知っておくと応用が利きます。

get_the_category() / the_category()

目的:投稿のカテゴリを取得/表示する

get_the_category()はカテゴリオブジェクトの配列を返すので、細かい制御が可能です。the_category()はリンク付きのカテゴリ一覧を出力します。

<?php
$categories = get_the_category();
if ( $categories ) {
  echo '<span class="category">' . esc_html( $categories[0]->name ) . '</span>';
}
?>

get_the_terms( $post_id, $taxonomy )

目的:任意のタクソノミーのタームを取得する

カスタムタクソノミーを使用している場合、この関数で投稿に紐づくタームを取得できます。戻り値がWP_Errorの場合もあるので、チェックを忘れずに。

<?php
$terms = get_the_terms( get_the_ID(), 'genre' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
  foreach ( $terms as $term ) {
    $link = get_term_link( $term );
    echo '<a href="' . esc_url( $link ) . '" class="tag">' . esc_html( $term->name ) . '</a>';
  }
}
?>

8. ナビゲーション|ページネーションと前後リンク

ユーザビリティの高いテーマは、ナビゲーションが丁寧に作られています。迷子にならない導線設計は、SEO以前にUXの基本です。

the_posts_pagination()

目的:アーカイブページのページネーションを出力する

WordPress 4.1で追加された、シンプルなページネーション出力関数です。引数で前後リンクのテキストや、表示するページ番号の数を調整できます。

<?php
the_posts_pagination( array(
  'mid_size'  => 2,
  'prev_text' => '« 前へ',
  'next_text' => '次へ »',
) );
?>

previous_post_link() / next_post_link()

目的:個別投稿の前後記事へのリンクを出力する

記事単体ページの下部などで、前後の記事への導線を設置する際に使用します。

<nav class="post-navigation">
  <div class="nav-prev"><?php previous_post_link( '%link', '« %title' ); ?></div>
  <div class="nav-next"><?php next_post_link( '%link', '%title »' ); ?></div>
</nav>

9. メニュー・ウィジェット・サイドバー

register_nav_menus() / wp_nav_menu()

目的:ナビゲーションメニューを登録/表示する

functions.phpでメニュー位置を登録し、テンプレートで表示します。管理画面の「外観 → メニュー」から編集可能になります。

<?php
// functions.php
add_action( 'after_setup_theme', function() {
  register_nav_menus( array(
    'primary' => 'メインメニュー',
    'footer'  => 'フッターメニュー',
  ) );
});

// テンプレート
wp_nav_menu( array(
  'theme_location' => 'primary',
  'container'      => 'nav',
  'menu_class'     => 'main-navigation',
) );
?>

register_sidebar() / dynamic_sidebar()

目的:ウィジェットエリアを登録/表示する

<?php
// functions.php
add_action( 'widgets_init', function() {
  register_sidebar( array(
    'name'          => 'サイドバー',
    'id'            => 'sidebar-1',
    'before_widget' => '<div class="widget">',
    'after_widget'  => '</div>',
    'before_title'  => '<h3 class="widget-title">',
    'after_title'   => '</h3>',
  ) );
});

// sidebar.php
if ( is_active_sidebar( 'sidebar-1' ) ) {
  dynamic_sidebar( 'sidebar-1' );
}
?>

10. body_class / post_class|CSS設計の要

body_class()

目的:bodyタグにページ種別や状態に応じたクラスを付与する

この関数をbodyタグに使用すると、homesinglepagecategoryなど、現在のページ種別に応じたクラスが自動で付与されます。CSSでページ種別ごとにスタイルを分けられます。

<body <?php body_class(); ?>>

post_class()

目的:article要素に投稿種別やカテゴリに応じたクラスを付与する

投稿タイプ、カテゴリ、タグなどに基づくクラスが付与されます。ループ内で使用します。

<article <?php post_class(); ?>>
  <!-- 投稿内容 -->
</article>

11. 条件分岐(Conditional Tags)

WordPressには、現在表示しているページの種類を判定する条件分岐関数が豊富に用意されています。

  • is_home() – ブログ投稿インデックスページかどうか
  • is_front_page() – フロントページかどうか
  • is_single() – 個別投稿ページかどうか
  • is_page() – 固定ページかどうか
  • is_category() – カテゴリアーカイブかどうか
  • is_search() – 検索結果ページかどうか
  • is_404() – 404ページかどうか
  • is_user_logged_in() – ユーザーがログインしているかどうか
<?php
if ( is_front_page() ) {
  // トップページ用の処理
} elseif ( is_single() ) {
  // 個別投稿用の処理
}
?>

12. スクリプト/スタイルのenqueue

wp_enqueue_style() / wp_enqueue_script()

目的:CSS/JavaScriptを正しい方法で読み込む

直接<link><script>タグを書くのではなく、WordPressのenqueue APIを使用することで、依存関係の管理、バージョニング、読み込み順序の制御が可能になります。

<?php
add_action( 'wp_enqueue_scripts', function() {
  // CSS
  wp_enqueue_style(
    'theme-style',
    get_stylesheet_uri(),
    array(),
    '1.0.0'
  );
  
  // JavaScript(フッターに出力)
  wp_enqueue_script(
    'theme-script',
    get_stylesheet_directory_uri() . '/assets/js/app.js',
    array( 'jquery' ),
    '1.0.0',
    true
  );
});
?>

13. 翻訳(i18n)とテキスト出力

テーマを配布する場合や、多言語サイトを構築する場合は、テキストを翻訳関数でラップしておくと後から対応しやすくなります。

  • __( $text, $domain ) – 翻訳して返す
  • _e( $text, $domain ) – 翻訳して出力する
  • esc_html__( $text, $domain ) – 翻訳してHTMLエスケープして返す
  • esc_html_e( $text, $domain ) – 翻訳してHTMLエスケープして出力する
<h2><?php esc_html_e( '最新の投稿', 'mytheme' ); ?></h2>

14. テーマカスタマイズ(Theme Support / Customizer)

add_theme_support()

目的:テーマがサポートする機能を宣言する

アイキャッチ画像の有効化、タイトルタグの自動生成、HTML5マークアップのサポートなど、テーマの基本設定を行います。

<?php
add_action( 'after_setup_theme', function() {
  // アイキャッチ画像を有効化
  add_theme_support( 'post-thumbnails' );
  
  // タイトルタグを自動生成
  add_theme_support( 'title-tag' );
  
  // HTML5マークアップをサポート
  add_theme_support( 'html5', array(
    'search-form',
    'comment-form',
    'comment-list',
    'gallery',
    'caption',
  ) );
});
?>

まとめ

この記事では、テーマ制作者が日常的に使用するWordPress関数を解説しました。重要なポイントを振り返ると:

  • エスケープの徹底:出力時は必ず適切なエスケープ関数を使用する
  • ループの理解:メインクエリとサブクエリの違い、wp_reset_postdata()の重要性
  • テンプレート分割:get_template_part()を活用して保守性を高める
  • 正しいenqueue:CSS/JSは直書きせず、enqueue APIを使用する

次回のPart2では、プラグイン開発における設定画面の作り方、管理メニューの追加、メタボックス、権限管理について詳しく解説します。

コメント

タイトルとURLをコピーしました