カスタム投稿タイプの作成
公開: 2016-08-23WordPressは、かなり長い間「単なるブログ」プラットフォームではありませんでした。 適切なコンテンツ管理システム(CMS)への変換を支援した重要な機能の1つは、カスタム投稿タイプです。
これは、カスタム投稿タイプ(CPT)のトピックに関する3部構成のシリーズの最初の記事です。 これらは、次の2つで説明するトピックです。
- カスタム分類法
- カスタム投稿タイプの表示(テンプレートとクエリ)
ただし、ここでは、カスタム投稿タイプとその設定方法を詳しく見ていきましょう。
カスタム投稿タイプとは何ですか?
デフォルトでは、WordPressは次の投稿タイプを使用します。
- 役職
- ページ
- アタッチメント
- リビジョン
- メニュー項目
では、カスタム投稿タイプとは何ですか? カスタム投稿タイプは基本的に、カスタム定義されたパラメーター(カスタムフィールド、カスタムカテゴリ/タグ構造など)を持つWordPress投稿です。 カスタム投稿タイプの典型的な例は、本、レビュー、紹介文、チームメンバー、ポートフォリオなどです。 ただし、作成するコンテンツのタイプを示すものであれば何にでも使用できます。
なぜあなたはそれを使うのですか?
通常のWP投稿を使用し、カテゴリとタグを使用して、さまざまな「投稿タイプ」を分離することができます。 しかし、これは理想的ではなく、将来的に合併症を引き起こす可能性があります。 カスタム投稿タイプを使用する理由は次のとおりです。
- WordPressで利用可能な他の投稿タイプから一部のコンテンツを分離したい場合
- 投稿するコンテンツ専用のカスタムフィールドが必要です
- 他の投稿タイプ(投稿やページなど)とは異なる方法でコンテンツを表示する必要があります
あなたが食べ物のブログを書いているとしましょう。 あなたは通常レストランの批評を投稿しますが、あなた自身のレシピも投稿したいと思います。 通常の投稿とは異なるレイアウトが必要になる可能性があるため、レシピは完璧なカスタム投稿タイプになります。 たとえば、材料などのカスタムフィールドもあります。 レシピCPTの導入により、ブログセクションには通常の投稿のみが含まれ、レシピには独自のセクション(独自のレシピアーカイブページ)が含まれるようになります。 これにより、レシピを見たいだけの訪問者が簡単になります。
この一連の記事では、Shakaテーマの紹介文CPTを作成します。 ユーザーがすべてのクライアントの声を表示できるページが必要だとします。 彼は、このカスタム投稿タイプにいくつかのカスタムフィールドを追加したいと考えており、これらの紹介文を表示するための別のレイアウトも望んでいます。 まず、カスタム投稿タイプを登録する方法を見てみましょう。
カスタム投稿タイプを作成するにはどうすればよいですか?
新しいカスタム投稿タイプを作成するには、 2つの方法があります。
最初のオプションは、カスタム投稿タイプを登録するプラグインを使用することです。 この方法は、PHPコードに慣れていないユーザーに適しています。 必要な詳細を入力するだけで、プラグインが残りの作業を行います。
2番目の方法は、カスタム投稿タイプを手動で登録することです。 つまり、コードを作成する必要がありますが、慌てる必要はありません。かなり単純で、巧妙なトリックも紹介します。
プラグインを使用してカスタム投稿タイプを作成する–簡単な方法
カスタム投稿タイプをサイトにすばやく簡単に追加したい場合は、そのような機能を提供するプラグインを使用する必要があります。 おそらくそれを行うための最も人気のあるプラグインはカスタム投稿タイプUIであり、無料で使いやすいです。 設定しましょう:
- wp-adminダッシュボードからカスタム投稿タイプUIプラグインをインストールしてアクティブ化します。
- プラグインをアクティブ化すると、CPTUI管理メニュー項目が使用可能になります。 CPT UI->投稿タイプの追加/編集に移動し、
- ここには、CPTをカスタマイズするために適用できる多くの設定があります。 この記事では、それらすべてについて詳しく説明することはしません。 ただし、各設定ラベルの横には、各設定の機能を説明するツールチップアイコンがあります。 ユースケース(お客様の声のCPT)に必要なものを設定しましょう。
- ナメクジを入力してください:お客様の声、複数形のラベル:お客様の声と単数形のラベル:お客様の声、
- [追加のラベルを編集]ボタンをクリックして、より正確なラベルを設定できます。 ただし、これをスキップして、後で問題が発生した場合は戻ってくることができます。
- ユースケースではすべてのデフォルト設定で問題ありません。カスタムフィールドのサポートを追加するだけです([サポート]セクションの[カスタムフィールド]チェックボックスを選択します)。
- [投稿タイプの追加]をクリックして、カスタム投稿タイプを作成します。
カスタム投稿タイプを作成するとすぐに、新しいお客様の声wp-adminダッシュボードメニュー項目が表示されます。 これで、カスタム投稿タイプを作成したときに選択したすべてのフィールド(タイトル、エディター、注目の画像、カスタムフィールド)を使用して新しい証言を作成できます。
このカスタム投稿タイプに分類法を設定することもできますが、それについては次の記事で説明します。
カスタム投稿タイプを手動で作成する–コーディングが必要
プラグインを使用してカスタム投稿タイプを作成できるのであれば、なぜ誰かがコードを使用して手動で作成したいと思うのでしょうか。
プラグインを使用してプラグインを作成する機能は確かに非常に便利ですが、コードを介して作成したい場合があります。 たとえば、クライアント用のサイトを開発していて、クライアントがこれらの設定を変更できないようにしたい場合、またはクライアントのサイトにもう1つのプラグインをインストールしたくない場合です。 また、複数のサイトで使用するテーマ(または子テーマ)を作成する場合は、サイトごとにプラグインの手順を繰り返すよりも、カスタム投稿タイプをコードに登録する方が簡単です。 それぞれの方法には長所と短所がいくつかあるので、自分のケースに最適なものを決定する必要があります。
カスタム投稿タイプを作成するコードは、テーマに直接配置できます( functions.php内)。 または、新しいプラグインを作成して、そこにCPTコードを配置することもできます。 これは、WordPressコミュニティでも分裂的な質問です。 一方は、プラグインに配置する必要があると言っているので、テーマを変更しても、CPTのデータは残ります(ただし、出力はスタイルが設定されておらず、新しいテーマでは見栄えがよくありません)。 反対側は、CPTコードをテーマに直接配置する方がよいと考えています。これは、テーマ固有であり、このテーマ専用にスタイル設定されているためです。
個人的には、スタイル(テーマ)を機能(プラグイン)から分離する方が常に良いと思います。したがって、CPT登録用の新しいプラグインを作成する方が良いオプションです。 新しいテーマに切り替えてCPTのデータを失うよりも、新しいテーマにスタイルを追加してCPT出力の見栄えを良くする方が簡単です。
カスタム投稿タイプをコードで登録する
私はきちんとしたトリックを約束しましたね? ええと、実際には、コードを介してカスタム投稿タイプを登録できるようにするためにコードを書く必要はありません。 これは奇妙に聞こえるかもしれませんが、それは本当です。 generatewp.comでこのツールを使用して、CPT登録に必要なコードを生成できます。 あなたがしなければならないのは、いくつかのデータを入力してコードを生成することだけです。 私は私たちの証言のユースケースのためにこれを行いました、そしてこれは出てきたものです:
// Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );
…プロジェクトで使用できる完全に有効なPHPコード。 前に説明したように、このコードを新しく作成したプラグインに入れるか、テーマのfunctions.phpファイルに入れることができます。 簡単にするために、私は後者を選びました。 このコードをテーマのfunctions.phpファイルに入れると、お客様の声のwp-adminメニューが表示され、新しいお客様の声を作成できるようになりました(上記のプラグインメソッドと同様)。

カスタム投稿タイプに別のアイコンを設定することもできます。これは、wp-adminメニューに表示されます。 $ args配列に次の行を追加する必要があります: 'menu_icon' => 'dashicons-businessman'
。 可能なすべてのアイコンのリストは、WordPressDashiconsにあります。 (このヒントをくれたAlexanderに感謝します)。
コードを詳しく見てみましょう。
- CPT登録プロセス全体は、
custom_post_type_testimonial()
関数にカプセル化されます。この関数は、スニペットの最後にあるinit
WPフックにフックされ、次のコード行が含まれますadd_action( 'init', 'custom_post_type_testimonials' );
。 このadd_action
呼び出しは、すべてを動かし、WordPressに魔法をかける最後の呼び出しです。 - 関数内のコードの最初のブロックは、このカスタム投稿タイプの翻訳文字列を保持する
$labels
と呼ばれるデータの配列です。 - 2番目のブロックは、CPT登録に使用される引数の配列です。ここで、CPTのすべての設定を定義できます。 CPTがサポートする必要のあるフィールド、公開されている場合、wp-adminメニューの位置、アーカイブページがある場合など。 オプションの完全なセットを確認するには、このWPコーデックスページにアクセスしてください。
- 関数の最後の行は
register_post_type( 'testimonials', $args );
。 これにより、「お客様の声」のカスタム投稿タイプが、上記の$args
で指定した設定に登録されます。
それでおしまい! 少しのPHPコードでカスタム投稿タイプを登録しました。
生成されたコードで変更する唯一の改善点は、エスケープする国際化関数を使用することです。 したがって、 _x()
と__()
)の代わりに、 esc_html_x()
とesc_html__()
を使用します。 出力値(翻訳文字列も含む)をエスケープすることは常に良いことですが、それは別のブログ投稿のトピックです。
シリーズの次の記事:カスタム分類法を作成する方法。