Toolset Types:カスタム投稿タイプの構造や機能を制御する

Toolset Types:カスタム投稿タイプの構造や機能を制御する

WordPressでカスタム投稿タイプを使う際、固定ページのような階層型か投稿のような非階層型にするか、アーカイブページの有無、フロントエンドに表示させないなど、投稿タイプの目的や性質に合わせて、その構造や機能を変更したい場合があります。

Toolset Typesで作成したカスタム投稿タイプは、WordPress標準の「投稿」とほぼ同じような構造と機能が使えるようにあらかじめ設定されていますが、これらの設定は Toolset Typesプラグインのカスタム投稿タイプ設定画面(Optionsセクション)で簡単に変更することができます。

このページでは、Optionsセクションの各オプションの役割や使い方を、簡単な例と画像を交えて解説します。

基本操作

ToolsetのTypes設定画面の「Options」セクションを開き、変更したい項目のラジオボタンまたはチェックボックスのON・OFFを切り替えます。ただし一部の項目は入力が必要ですが、初心者の方はあまり気にする必要はありません。

Rewirte(パーマリンクの書き換え)

Rewirteにチェックを入れると、以下のラジオボタンで指定した書式でパーマリンク(URL)を書き換えます。

  • Use the normal WordPress URL logic(初期値)
    編集中の投稿タイプのスラッグをWordPressのURL構造に当てはめます。
  • Use a custom URL format
    別途指定したスラッグを使用します。URL構造への当てはめ方は上記と同じです。

Rewriteの具体例

Rewriteの設定変更によってパーマリンクがどのように変化するのか具体的な例を使ってみてみましょう。

使用するカスタム投稿タイプの例

  • サイトのURL:http://toolset-demo.local
  • カスタム投稿タイプ:料理
  • カスタム投稿タイプのスラッグ:dish
  • 具体的な投稿のスラッグ:sushi

上記の例では、投稿のパーマリンクはサイトのパーマリンク設定と上記のオプションの組み合わせに応じて次のように変化します。


サイトのパーマリンク設定書き換えなし
Rewrite OFF
投稿タイプのスラッグ(dish)
で書き換え
指定したスラッグ(food)
で書き換え
基本http://toolset-demo.local/?dish=sushihttp://toolset-demo.local/?dish=sushihttp://toolset-demo.local/?dish=sushi
日付と投稿名http://toolset-demo.local/dish/sushi/http://toolset-demo.local/food/sushi/
月と投稿名
数字ベースhttp://toolset-demo.local/archives/dish/sushihttp://toolset-demo.local/archives/food/sushi
投稿名http://toolset-demo.local/dish/sushi/http://toolset-demo.local/food/sushi/
※この表は右にスクロールできます。
  • サイトのパーマリンク設定を「数字ベース」にしていて、「Allow permalinks to be prepended with front base」がOFFになっている場合は、パーマリンク中の「archives」部分は表示されません。
  • 後述の「query_var」のチェックをOFFにした場合、「基本」および「書き換えなし」の書式は上記の表と異なります。

Allow permalinks to be prepended with front base(カスタム構造の許可)

上記のRewriteをONにしている場合にのみ動作するオプションで、編集中のカスタム投稿タイプのスラグの前に、カスタムパーマリンクを追加できるようにします(デフォルトはON)。こちらもイメージしにくいと思いますので、前述の例を使ってみてみましょう。

前提として、WordPressのパーマリンク設定で、「カスタム構造」を選択し、以下のように設定しているとします。

この場合に、「Allow permalinks to be prepended with front base」のON・OFFによってパーマリンクは以下のように変化します。

ONOFF
http://toolset-demo.local/blog/dish/sushihttp://toolset-demo.local/dish/sushi/

なお、先ほども述べましたが、このオプションを切り替えると、WordPressのパーマリンク設定で「数字ベース」を選択した場合の「archives」部分も同様に変化します。

Feeds(フィードの出力)

このオプションをONにしている場合、編集中の投稿タイプに関するフィード※を配信(生成)します。規定値はONです。
※フィードリーダー向けにコンテンツの更新情報を表示する機能、またはその更新情報のこと

編集中の投稿タイプの使用目的によっては、フィードを配信する必要がない場合は、OFFにしておきましょう。なお、このオプションは、後述の「has_archive」がONになっている時のみ機能します。「has_archive」がOFFの場合は、そもそもフィードが配信されません。

Pages(アーカイブページの2ページ目以降をサポートする)

このオプションをONにしている場合、アーカイブページの2ページ目以降を出力します。OFFの場合は、404 Not Found を返します。規定値はONです。通常はONのままで良いでしょう。なお、このオプションは、後述の「has_archive」がONになっている時のみ機能します。

has_archive(アーカイブページの有無)

このオプションをONにしている場合、アーカイブページを出力します。規定値はONです。なお、このオプションをOFFにすると、前述の「Feeds」と「Pages」はチェックに関わらず、無効化されます。ちなみに、後述の「publicly_queryable をOFFにすべき場合」に該当するようなカスタム投稿タイプの場合、このオプションもOFFにしておくと良いでしょう。

アーカイブページのスラッグを別途指定する

アーカイブページのスラッグは、デフォルトで編集中の投稿タイプで指定したスラッグが使用されますが、別のスラッグを使用したい場合は、has_archiveの下にある入力欄に英半角小文字で指定します。
この指定によってパーマリンクがどのように変化するのか具体的な例を使ってみてみましょう。

使用するカスタム投稿タイプの例

  • サイトのURL:http://toolset-demo.local
  • カスタム投稿タイプ:料理
  • カスタム投稿タイプのスラッグ:dish

上記の例で、アーカイブページ用のスラッグに、「dish-archive」を指定するとアーカイブページのパーマリンクは以下のようになります。

指定なし
(デフォルト)
指定あり
http://toolset-demo.local/dish/http://toolset-demo.local/dish-archive/

show_in_menu(メニューへの表示)

このオプションをONにしている場合、管理画面のメニュー(画面の左側)に編集中の投稿タイプを表示します。OFFにすることで管理画面のメニューから隠すことができます。なお、このオプションは、後述の「show_ui」がONになっている時のみ機能します。

編集中の投稿タイプのメニューを他のメニューの下に配置する

編集中の投稿タイプのメニューを他のメニューの下に配置したい場合は、show_in_menu の下にある入力欄にトップレベルのphpファイル名を指定します。例えば、以下のような振合いで記述します。

  • WordPress標準の「投稿」の下に配置する場合
    edit.php
  • WordPress標準の「固定ページ」の下に配置する場合
    edit.php?post_type=page
  • 他のカスタム投稿タイプの下に配置する場合
    ※somethingの部分を、配置したいカスタム投稿タイプのスラッグに置き換えてください。
    edit.php?post_type=something
  • 管理画面の「ツール」の下に配置する場合
    tools.php

参考までに「料理」というカスタム投稿タイプをWordPress標準の「投稿」の下に配置した場合のスクリーンショットを載せておきます。

例えば、投稿タイプに親子関係を設定した場合など、カスタム投稿タイプを管理画面のメニューのトップレベルに配置するよりも、親・投稿タイプの下に配置した方が適切であると思える時は、上記のような指定をしてみても良いでしょう。

管理画面のメニューのトップレベルにおける、カスタム投稿タイプの順序を変更したい場合は、Saveセクションの「Admin Menu position after」を使って変更します。

show_ui(管理画面での表示)

このオプションをOFFにした場合、編集中のカスタム投稿タイプは管理画面上に表示されなくなります(メニューはもちろん、新規作成、編集、投稿一覧なども表示できなくなります)。ただし、フロントエンドから公開済みの投稿を閲覧することは可能です。デフォルト値はONです。

あまりOFFにする機会はないと思いますが、今後更新しないカスタム投稿タイプで、公開済みの記事は残しておきたいが管理画面上からは隠しておきたい場合などに使うことがあるのかもしれません。

なお、このオプションをOFFにすると、前述の「show_in_menu」はチェックに関わらず、無効化されます。

publicly_queryable(フロントエンドでの表示)

このオプションをOFFにした場合、編集中のカスタム投稿タイプは、フロントエンドで表示されなくなります。デフォルト値はONですが、編集中の投稿タイプの使用目的によっては、OFFにすべきオプションです。

publicly_queryable をOFFにすべき場合

では、どのような場面で publicly_queryable をOFFにするべきなのでしょうか? OFFにすると、フロントエンドに表示されなくなるといっても、実は、Viewやコンテンツテンプレートで、カスタム投稿タイプに格納されている投稿データ(カスタムフィールドなどの値も)を引っ張ってきて表示させることは出来ます。←ここがポイントです。

例えば、次の画像のサイトでは、カスタム投稿タイプとして「SIMプラン」があり、プランの名称や月額料金などの情報が格納されていますが、各プランを独立したページで表示する必要はありません。

このサイトでは同様に、速度情報を格納したカスタム投稿タイプも存在しますが、こちらも1つのレコードを個別のページに表示する必要はありません。

このように、「本文」を主体として構成される一般的な投稿や固定ページと異なり、カスタムフィールドを主体として、サイト内のコンテンツの一部を構成する「データベース的」な役割のみを担っているカスタム投稿タイプについては、publicly_queryable をOFFにして運用する方が適切です。

exclude_from_search(検索結果から除外)

このオプションをONにしている場合、編集中の投稿タイプをフロントエンドの検索結果から除外します。前述の publicly_queryable をOFFにすべき場合に該当するようなカスタム投稿タイプであれば、このオプションもONにしておくと良いでしょう。デフォルト値はOFFです。

hierarchical(階層型構造)

このオプションをONにしている場合、編集中の投稿タイプをWordPress標準の「固定ページ」のような階層型の投稿タイプにすることができます。デフォルト値はOFF(WordPress標準の「投稿」のような非階層型)です。なお、階層型構造にした場合は、こちらのページを参考にして、親ページや順序を指定するための「Page Attributes(固定ページの属性)」セクションをONにしてください。

このオプションは、カスタム投稿タイプの目的に合わせて変更すればOKです。どちらが良いというものでもありませんが、良く分からなければ、とりあえずOFFのままでも構いません。

can_export(エクスポートの許可)

このオプションをONにしている場合、編集中の投稿タイプが 管理画面の「ツール -> エクスポート」からエクスポートが可能になります。デフォルト値はONです。特別な理由がない限り、ONのままで良いでしょう。

show_in_nav_menus(ナビゲーションメニュー編集画面への表示)

このオプションをONにしている場合、編集中の投稿タイプが 管理画面の「外観 -> メニュー」で、ナビゲーションメニューを編集する際に選択可能になります。デフォルト値はONです。前述の「publicly_queryable をOFFにすべき場合」に該当するようなカスタム投稿タイプならば、邪魔になるだけなのでOFFにしておいても良いでしょう。

query_var(パーマリンク用の変数宣言)

編集中の投稿タイプのスラッグをあらかじめ変数として宣言しておくことで、簡易なパーマリンクを使用できるようにします。デフォルト値はONです。

このオプションをOFFにした場合、WordPressのパーマリンク設定で「基本」を選択した際のURL書式が変化するので、特別な理由がない限り、ONのままでよいでしょう(お好みでどうぞ)。

この指定によってパーマリンクがどのように変化するのか具体的な例を使ってみてみましょう。

使用するカスタム投稿タイプの例

  • サイトのURL:http://toolset-demo.local
  • カスタム投稿タイプ:料理
  • カスタム投稿タイプのスラッグ:dish
  • 具体的な投稿のスラッグ:sushi (※post id は38)

query_var
ON
query_var
OFF
http://toolset-demo.local/?dish=sushihttp://toolset-demo.local/?post_type=dish&p=38

query_var で使う変数を別途指定する

編集中の投稿タイプのスラッグとは別の変数を使用したい場合は、query_var の下にある入力欄に 英半角小文字 で文字列を入力します。例えば「food」と指定すると、以下のように変化します。

デフォルト
(指定なし)
変数としてfood
を指定
http://toolset-demo.local/?dish=sushihttp://toolset-demo.local/?food=sushi

Permalink epmask(エンドポイントマスクの参照)

パーマリンクにエンドポイントを追加するためのエンドポイントマスク名を指定します。デフォルト値は「EP_PERMALINK」ですが、そのままでは特に機能しません。エンドポイントマスクにあらかじめエンドポイント名を設定しておくことで機能します。エンドポイントが追加されると、同一の投稿に対して通常のパーマリンクと、後ろにエンドポイントを追加したURLの両方でアクセスすることができます。

例えば、「EP_PERMALINK」に「json」というエンドポイントを設定するには、使用中のテーマの「functions.php」に以下の振合いで直接記述するか、Toolsetでスニペットを作成して記述します。

add_rewrite_endpoint( 'json', EP_PERMALINK );

ここでは、Toolsetでカスタムコード(スニペット)を作成する方法を見てみましょう。

previous arrow
next arrow
Full screenExit full screen
Slider

以上で、エンドポイントマスクの「EP_PERMALINK」に、エンドポイントが設定され、編集中の投稿タイプでもエンドポイントが利用できるようになりました。実際の画面を見てみましょう。

Slider

上記の例では、WorePressに標準で用意されているエンドポイントマスクのひとつ※を使用してエンドポイントを設定しましたが、他の標準エンドポイントマスクを利用したり、ご自身でカスタムエンドポイントマスクを作成して指定することも可能(なはず)です。その場合は、Permalink epmask 欄で指定するエンドポイントマスク名を変えて、カスタム投稿タイプを保存しなおしてください。
※「EP_PERMALINK」は、WordPress標準の「投稿」でエンドポイントを利用するためのエンドポイントマスクです。

エンドポイントについての詳細は、WordPress Codex(英語)を参照してください。「EP_PERMALINK」以外の WorePressに標準で用意されているエンドポイントマスクも確認できます。

show_in_rest(REST APIへの公開)

このオプションがONの場合、編集中の投稿タイプをREST APIに公開します。デフォルト値はOFFです。REST APIに公開すると、外部からコンテンツを取り出したり色々なことが出来ますが、初心者向けの機能ではないので、通常はOFFにしたままで良いでしょう。ここでは、このオプションをONにした時の出力内容を、Google Chromeの Webアプリを使って簡単に確認してみます。

使用するカスタム投稿タイプの例

  • サイトのURL:http://toolset-demo.local
  • カスタム投稿タイプ:料理
  • カスタム投稿タイプのスラッグ:dish
  • WordPressのバージョン:4.9.8(REST API V2)

上記の例では、REST APIのアドレスは、
http://toolset-demo.local/wp-json/wp/v2/dish/
となります。なお、REST API用のエンドポイントの記述について詳しく知りたい方は、WordPress.orgの「REST API Handbook」を参照してください。

Slider

REST APIで使うエンドポイントを別途指定する

REST API 用のエンドポイントは、デフォルトでは編集中の投稿タイプのスラッグと同じに設定されています。これを変更したい場合は、REST Base の入力欄に英半角小文字で文字列を入力します。例えば「food」と指定すると、REST APIのアドレスは以下のように変化します。
http://toolset-demo.local/wp-json/wp/v2/food/

Toolsetの使い方・全目次