【WordPress】カスタム3兄弟

WordPressのテーマ作成を行うにあたり、カスタム3兄弟 は非常に重要な要素です。

カスタム3兄弟を知っておくことで、WordPressへの理解がかなり深まると思います。

1.カスタムフィールド

記事のデフォルトであるタイトルや本文以外に様々な項目の情報を入力できるフィールドのことです。

こんな感じで、管理画面の投稿の「表示オプション」を見るとチェックボックスがありますので、チェックを入れることでカスタムフィールドが使えるようになります。

しかし、標準的なカスタムフィールドの場合、入力欄が常に複数行テキストとなり、入力チェックや必須項目の設定などの機能もないです。そこで、プラグインを使うと良いです。

Advanced Custom Fields(https://ja.wordpress.org/plugins/advanced-custom-fields/

このプラグインを使うことで、1行テキストやドロップダウンリストなどの多くの項目タイプを選択できたり、独自のファイルアップロードエリアを設置できたり、他の記事の関連付けができたりと非常に多機能で便利です。

カスタムフィールドの弊害

そんな便利なカスタムフィールドにも欠点があります。

それは、WordPressとの関係性です。

WordPressはデータベースのテーブル構造に汎用性をもたせているために、最適化がされておりません。そのため検索は一般的に重くなっています。

特に、カスタムフィールドを複雑に絡めた検索を行う場合には、非常に非常に重くなってしまうため別のテーブルで管理し、$wpdbで直接SQLを叩くなどの対応が必要です。

カスタムフィールドを使う場合は、カスタムフィールドの検索を複雑にしないということが大事です。

 

2.カスタム投稿タイプ

WordPressにはデフォルトで「投稿」と「固定ページ」があります。これを「投稿タイプ」と呼ぶのですが、独自の投稿タイプを増やしたいときも出てきます。そのことを「カスタム投稿タイプ」と呼びます。主に、

  • 固定ページだけで管理しきれない場合
  • URLのルールを変更したい場合
  • Advanced Custom Fieldsとの組み合わせで入力項目を変更したい場合
  • 独自のカスタム分類を利用したい場合

などなどに使います。

また、「投稿」と「固定ページ」の違いは、継承(hierarchical)の有無があるかどうかです。「固定ページ」は継承があり、親子関係の階層構造が取れます。一方「投稿」は継承がなく、時系列に沿った記事に適しています。

テーマの各テンプレート(front-page.phpやsingle-movie.phpなど)に関して、「投稿(single)」で作るのか、「固定ページ(page)」で作るのか、「カスタム投稿タイプ(single-〇〇.php、archive-〇〇.phpなど)」で作るのかを考えることになり、作るべきページの特性に応じて使い分けを行うことになります。

 

3.カスタムタクソノミー

https://wpdocs.osdn.jp/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E5%88%86%E9%A1%9E

投稿には、「カテゴリー」と「タグ」という分類の機能があります。「分類=タクソノミー」です。

つまり、「カスタムタクソノミー」=「カスタム分類」です。

カテゴリーとは、階層にできる分類の機能。

カテゴリーとは、1つ以上選択することが必要。選択しない場合は、標準カテゴリーに設定。

タグは記事に付与するキーワードのイメージ。

カスタムタクソノミーとは、「固定ページ」や「カスタム投稿タイプ」にも分類を追加したい場合に利用するものです。

functions.phpなどに、

register_taxonomy($taxonomy, $object_type(追加したい投稿タイプ), $args(labels、public、hierarchicalを指定));

という書式で書いてあげると利用可能になります。

そして、「item」という投稿タイプに、「商品のジャンル(items)」というカスタム投稿タイプを作成する場合は、

add_action('init', 'add_custom_taxonomy');
function add_custom_taxonomy() {
    register_taxonomy('items', 'item', [
        'labels' => [
            'name' => '商品ジャンル',
        ],
        'hierarchical' => true,
    ]);
}

 

上記の3つは設計段階で必須のものですが、最初によく確認しておいてから実装していかないとあとで「あれ?」ということになりますので覚えておいて損はないと思います!

Leave a Reply

Your email address will not be published. Required fields are marked *