WordPressのカスタム記事タイプとは何でしょうか?
WordPressではデフォルトで「記事(Article)」と「ページ(Page)」の2種類のコンテンツタイプが用意されていますが、複雑なウェブサイトを構築する際にはこれだけでは不十分なことが多いです。そのため、カスタムポストタイプ(Custom Post Type)を利用することが一般的です。 CPTこれはWordPressの核心機能の一つであり、開発者が独立したデータ構造とバックエンド管理インターフェースを持つ新しいコンテンツタイプを作成することを可能にします。これを「コンテンツテンプレート」と考えるとわかりやすいでしょう。つまり、特定の種類の情報を管理するためのテンプレートのようなものです。
例えば、映画レビューサイトでは、ニュースを書くためにデフォルトの「記事」タイプを使用すると同時に、「映画」という名前のカスタム記事タイプを作成して映画の情報を専門的に管理することができます。各映画のエントリには、監督、主演、評価などの専用フィールドを含めることができます。また、eコマースサイトでは「商品」タイプを、学校のウェブサイトでは「授業」や「教員」タイプを作成することができます。このようにして、必要に応じて適切な記事タイプを利用することで、情報の整理や管理が効率的に行えます。 CPT異なる種類のコンテンツが明確に分離されることで、データ管理がより効率的になります。また、これは後続のテンプレートのカスタマイズや機能拡張のための堅固な基盤を築くことにもなります。
カスタムの記事タイプを作成するには、以下の手順をたどります:
WordPressでカスタムの記事タイプを作成するには、主に2つの方法があります:コードを使って登録する方法と、プラグインを使用する方法です。開発者にとっては、コードを使って登録する方法をマスターすることが非常に重要です。なぜなら、これにより最大限の柔軟性と制御性が得られ、テーマやカスタムプラグイン内でのバージョン管理も容易になるからです。
推薦図書 WordPressのカスタム記事タイプを徹底的にマスターする:作成から高度な応用実践まで。
コードを使用してカスタムの記事タイプを登録する
最も標準的で推奨される方法は、トピックに基づいて… functions.php ファイル内、または独立した機能プラグイン内で使用します。 register_post_type この関数は登録処理を行います。この関数は2つのパラメータを受け取ります:カスタム記事タイプの識別子(slug)と、すべてのパラメータを含む配列です。
以下は、「映画」という名前のカスタム記事タイプを作成するための基本例です:
function create_movie_post_type() {
$labels = array(
'name' => '电影',
'singular_name' => '电影',
'menu_name' => '电影管理',
'add_new_item' => '添加新电影',
'edit_item' => '编辑电影',
'view_item' => '查看电影',
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'movie' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'menu_icon' => 'dashicons-video-alt',
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
);
register_post_type( 'movie', $args );
}
add_action( 'init', 'create_movie_post_type' ); このコードは add_action フックはWordPressが初期化される際に実行されます。 create_movie_post_type 関数です。その関数の内部では、表示用のタグが定義されています。 $labels およびコアパラメータ $args重要なパラメータには以下のものが含まれます:public バックグラウンドおよびフロントエンドでの表示を制御する。rewrite URLリダイレクトルールを定義すると、ここで単一の映画にアクセスするリンクは次のようになります: yoursite.com/movie/some-movie;has_archive アーカイブページの有無を決定する(例: yoursite.com/movie/);supports この配列は、そのコンテンツタイプがサポートする機能(タイトル、エディタ、特集画像など)を定義しています。
プラグインを使用してカスタムの記事タイプを作成する
コードに不慣れなユーザーにとって、プラグインはすぐに使いこなせる優れた選択肢です。「Custom Post Type UI」と「Toolset Types」は非常に人気のあるプラグインです。これらは直感的なユーザーインターフェースを提供しており、チェックボックスを選択したりフォームに情報を入力したりするだけで、必要な設定を定義することができます。 CPT さまざまな属性、例えばタグ、公開性、サポートされている機能などです。
プラグインを使用する方法は簡単で迅速ですが、通常は余分なデータベースクエリが発生し、その設定はプラグイン自体に依存しています。ウェブサイトを別のホストに移行したり、大規模な更新を行ったりする際には、カスタムされた記事タイプの設定が保持されるようにするために追加の手順が必要になる場合があります。そのため、本番環境や長期的なメンテナンスが必要なプロジェクトでは、コードによる設定方法の方が一般的に優れた選択肢となります。
推薦図書 WordPressテーマ開発ガイド:ゼロから高性能なカスタムテーマを構築する。
カスタム記事タイプにカスタムフィールドを追加する
カスタム記事タイプ自体は単なる構造フレームワークを提供するだけであり、映画の「公開日」や「監督」といったユニークな情報を実際に保存するためには、カスタムフィールド(Custom Fields)やより強力なカスタムメタボックス(Meta Boxes)を使用する必要があります。WordPressには組み込みの「カスタムフィールド」パネルがありますが、そのインターフェースは簡素で機能も限られており、コンテンツ編集者にとってはあまり使いやすくありません。
高度なカスタムフィールドプラグインを使用する
Advanced Custom Fields(ACC)プラグインは、カスタムフィールドを管理するための業界標準です。このプラグインを使用すると、グラフィカルなインターフェースを通じて、さまざまな記事タイプに対してカスタムフィールドを設定することができます(あなたのサイトに含まれる記事タイプも含まれます)。 CPTさまざまなタイプのフィールドグループを作成できます。例えば、テキスト、画像、選択肢、関連関係などです。
例えば、「映画」の場合“ CPT 「監督」、「主演」、および「公開年」を含むフィールドグループを作成してください。ACFプラグインをインストールして有効にした後、その設定ページにアクセスし、新しいフィールドグループを作成します。その位置ルールを「記事タイプが映画に等しい」に設定します。その後、「監督」(テキストフィールド)、「主演」(テキストエリアフィールド)、「公開年」(数字フィールド)を順に追加してください。保存すると、映画の内容をバックエンドで編集する際に、これらの直感的な入力ボックスが表示されるようになります。
コードを使用してカスタムメタボックスを作成する
もし完全にコードによって制御したい場合は、あなたの…(「your…」の部分が原文で欠落していますので、ここに適切な言葉を入れてください)に対して、以下のような処理を行うことができます。 CPT カスタムのメタボックスを開発するには、WordPressのメタボックスAPIおよび保存関数を使用する必要があります。コード量は多いですが、完全なカスタマイズの自由度が得られます。
以下は、「映画」に「監督」フィールドを追加する方法を示す簡略化された例です:
// 1. 添加元框
function add_movie_director_meta_box() {
add_meta_box(
'movie_director_meta_box', // 元框ID
'导演信息', // 元框标题
'render_movie_director_meta_box', // 回调函数,用于输出HTML
'movie', // 目标文章类型
'side', // 位置
'default' // 优先级
);
}
add_action( 'add_meta_boxes', 'add_movie_director_meta_box' );
// 2. 渲染元框内容
function render_movie_director_meta_box( $post ) {
// 获取已保存的值
$director = get_post_meta( $post->ID, '_movie_director', true );
// 添加安全字段
wp_nonce_field( 'movie_director_nonce_action', 'movie_director_nonce' );
// 输出HTML
echo '<label for="movie_director">导演姓名:</label>';
echo '<input type="text" id="movie_director" name="movie_director" value="' . esc_attr( $director ) . '" style="width:100%;" />';
}
// 3. 保存元框数据
function save_movie_director_meta_data( $post_id ) {
// 检查nonce、权限、自动保存等
if ( ! isset( $_POST['movie_director_nonce'] ) || ! wp_verify_nonce( $_POST['movie_director_nonce'], 'movie_director_nonce_action' ) ) {
return;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// 保存数据
if ( isset( $_POST['movie_director'] ) ) {
update_post_meta( $post_id, '_movie_director', sanitize_text_field( $_POST['movie_director'] ) );
}
}
add_action( 'save_post', 'save_movie_director_meta_data' ); このコードは、サイドバーにメタボックスを作成します。そのメタボックスには監督の名前を入力するためのフィールドが含まれています。データを保存する際には、WordPressの標準的なセキュリティチェックプロセスが適用されています。これには、 nonce 保存データの検証、権限チェック、および自動保存時の重複処理の防止を行います。保存されたデータは… update_post_meta 関数は「ストレージ」に保存されています。 wp_postmeta 表の中に。
推薦図書 WooCommerceプラグインの使い方ガイド:インストールと設定から店舗運営までの完全な手順。
カスタム記事タイプのテンプレートファイルを作成する
作成しました。 CPT コンテンツを入力した後、それをフロントエンドで表示するためのテンプレートを用意する必要があります。WordPressはテンプレートの階層システムに従っており、入力したコンテンツを表示するための適切なテンプレートファイルを自動的に探します。
単一記事タイプのテンプレート
ユーザーが単一の映画コンテンツ(例えば…)にアクセスした場合、 yoursite.com/movie/inceptionWordPressでは、テンプレートファイルを検索する際に以下の順序で処理を行います:
1. single-movie.php (最も具体的に)
2. single.php
3. singular.php
4. index.php
したがって、ベストプラクティスとしては、テーマフォルダ内に「`theme-name```という名前のフォルダを作成することです。 single-movie.php このファイルでは、映画の表示方法を完全にカスタマイズすることができ、以前に作成したカスタムフィールドを呼び出すことができます。
<?php get_header(); ?>
<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
<header class="entry-header">
<h1 class="entry-title">あなたのウェブサイトのタイトルを表示するには、次のコードを使用してください。</h1>
<div class="entry-meta">
<span>导演:</span>
</div>
</header>
<div class="entry-content">
<!-- 显示其他自定义字段,如主演、上映年份 -->
<p><strong>主演:</strong><?php the_field( 'lead_actor' ); ?></p>
<p><strong>公開年:</strong><?php the_field( 'release_year' ); ?></p>
</div>
</article>
<?php get_footer(); ?> ACFプラグインを使用する場合、そのプラグインが提供する機能を活用することができます。 the_field() この関数はフィールドの値を簡単に出力します。カスタムコードで保存されたフィールドを使用する場合は、そのコードを利用してください。 get_post_meta() 関数。
アーカイブページテンプレート
ユーザーが映画リストページにアクセスしたとき(例えば…) yoursite.com/movie/)の際、WordPressは以下を探します:
1. archive-movie.php
2. archive.php
3. index.php
作成 archive-movie.php このファイルでは、WordPressのループ機能を使用してすべての映画を一覧表示することができます。また、クエリをカスタマイズしたり、ページング機能を利用したりすることも可能です。
<?php get_header(); ?>
<h1>映画ライブラリ</h1>
備考:この翻訳はPHPコードのみを対象としたもので、HTMLコードは含まれていません。
<article>
<h2><a href="/ja/</?php the_permalink(); ?>">あなたのウェブサイトのタイトルを表示するには、次のコードを使用してください。</a></h2>
<?php the_post_thumbnail( 'medium' ); ?>
<p>导演:</p>
あなたのコメントは受け付けられました。ありがとうございます。
</article>
<?php endwhile; the_posts_navigation(); else : ?>
<p>現在、上映中の映画はありません。</p> 概要
WordPressのカスタム記事タイプをマスターすることは、単純なブログ形式を脱却し、機能豊富で構造が明確な現代のウェブサイトを構築するための鍵となるステップです。 register_post_type 関数によるコードの登録が開始され、ACFプラグインやカスタムメタフィールドを通じて特別なフィールドが追加され、その後テンプレートの階層に従って専用のコンテンツが作成されます。 single-{cpt}.php と archive-{cpt}.php テンプレートファイルにより、このプロセス全体が完全なものとなります。 CPT 開発ワークフローの構築。
実践を通じて、私たちは「映画」というコンテンツタイプを作成しました。このタイプには独立したバックエンドメニュー、専用のデータフィールド、そしてカスタマイズされたフロントエンドの表示機能が備わっています。このアプローチは、「製品」、「ポートフォリオ」、「イベント」など、あらゆるコンテンツニーズにシームレスに適用することができます。これらの知識を理解し、実践に移すことで、WordPress開発者としての能力が大きく向上し、ユーザーに本当にカスタマイズされたデジタル体験を提供できるようになるでしょう。
FAQ よくある質問
カスタム記事タイプとカスタム分類法の違いは何ですか?
カスタム記事タイプは、「映画」や「製品」のような新しいコンテンツエンティティを定義するために使用されます。一方、カスタム分類法(タグやカテゴリーディレクトリの拡張など)は、コンテンツを分類し整理するために使用されます。1つのカスタム記事タイプは、複数のカスタム分類法と関連付けることができます。例えば、「映画」という記事タイプは、複数のカテゴリーやタグと関連付けることができるのです。 CPT 「タイプ」(アクション、コメディ)と「地域」(中国語、ハリウッド)という2つのカスタム分類法を関連付けることができます。
CPT(Custom Post Type)は、テーマの `functions.php` ファイル内で登録するべきですか、それとも独立したプラグイン内で登録するべきでしょうか?
それはプロジェクトの複雑さや移植性の要件に依存します。特定のテーマに密接に結びついており、再利用ができない場合には… CPT「、」はトピックの中に置くことができます。 functions.php はい。しかし、ベストプラクティスとしては、すべてのカスタム記事タイプや分類法の登録コードを格納するための独立した機能プラグインを作成することです。そうすることで、テーマを切り替えてもこれらのコンテンツタイプやそのデータは保持され、ウェブサイトの「機能」と「外観」がより分離された状態になります。
既存のカスタム記事タイプの固定リンク構造をどのように変更するのですか?
登録時にそれを行うことができます。 CPT 時を通じて rewrite パラメータの設定は、登録後にも行うことができます。 register_post_type_args フィルターを変更した後は、WordPressの管理画面にある「設定」 → 「固定リンク」ページにアクセスし、「変更を保存」を一度クリックする必要があります。これにより書き換えルールが更新され、新しいリンク構造が有効になります。そうしないと、新しい設定が反映されない場合があります。
なぜフロントエンドで自分が作成したカスタム記事タイプが表示されないのでしょうか?
これは通常、登録時のパラメータ設定が不適切であるために発生します。まずは登録処理を行う関数を確認してください。 $args 配列内の 'public' と 'publicly_queryable' すべてのパラメータが設定されていますか? true次に、確実に… 'show_ui' と 'show_in_nav_menus' それもまた… true最後に、テンプレートファイルを確認してください。single-{cpt}.php または archive-{cpt}.php)アクティビティのテーマのルートディレクトリ内に正しく作成されているかどうかです。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。