2026年7月10日
2026年7月10日
WordPressのカスタム投稿タイプを作成する方法
はじめに
WordPressは非常に柔軟なCMSプラットフォームで、さまざまな情報を効果的に管理できます。標準の「投稿」や「固定ページ」といった投稿タイプだけでなく、独自のカスタム投稿タイプを作成することで、サイトの機能を大幅に拡張することができます。例えば、製品情報やギャラリー画像、イベントなど、特定の用途向けにカスタマイズされた投稿タイプを作成できます。
症状・背景
このテーマが必要になる主な場面:
- サイト上で製品情報を管理したい場合
- 会議やイベントの情報を効率よく掲載したい場合
- ユーザーが自作コンテンツを投稿する際、特定のフォーマットに従ってもらいたい場合
手順・設定方法
ステップ1: カスタム投稿タイプを登録する
# WordPressのフックを使用してカスタム投稿タイプを登録します。
function register_custom_post_type() {
$args = array(
'label' => __('Custom Post Type'),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'custom-post-type')
);
register_post_type( 'custom_post', $args );
}
add_action( 'init', 'register_custom_post_type' );
# カスタム投稿タイプの管理画面で表示するラベルを設定します。
function custom_post_labels() {
$labels = array(
'name_admin_bar' => _x('Custom Post Type', 'add new on admin bar'),
);
register_taxonomy_for_object_type( 'category', 'custom_post' );
}
add_action( 'init', 'custom_post_labels' );
ステップ2: カスタム投稿タイプのメタボックスを追加
# メタボックスの設定を行います。
function custom_meta_boxes() {
add_meta_box(
'custom_fields',
__( 'Custom Fields', 'textdomain' ),
'render_custom_fields',
'custom_post',
'normal',
'high'
);
}
add_action( 'add_meta_boxes', 'custom_meta_boxes' );
# メタボックスの表示内容を定義します。
function render_custom_fields($post) {
$value = get_post_meta($post->ID, '_meta_box_key', true);
echo '<label for="meta-box-key">';
_e( 'Label text', 'textdomain' );
echo '</label>';
echo '<input type="text" id="meta-box-key" name="meta-box-key" value="' . esc_attr($value) . '" />';
}
ステップ3: メタボックスのデータを保存
# メタボックスから送信されたデータを保存します。
function save_custom_fields( $post_id ) {
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return;
if ( !current_user_can('edit_post', $post_id) )
return;
update_post_meta($post_id, '_meta_box_key', $_POST['meta-box-key']);
}
add_action( 'save_post', 'save_custom_fields' );
ステップ4: カスタム投稿タイプを有効化
# テーマのfunctions.phpファイルに上記の関数を追加します。
require_once plugin_dir_path(__FILE__) . 'custom-post-type-functions.php';
注意事項
- 新しいカスタム投稿タイプを作成する際は、既存のデータベース構造と衝突しないように注意してください。
- カスタムフィールドを追加する場合は、適切なセキュリティ対策を行いましょう。特にユーザーが入力可能なフィールドについては、データのエスケープやバリデーションが必要です。
- カスタム投稿タイプは一般的に公開性が高いものですが、必要に応じて非表示にする設定も可能です。
まとめ
1. カスタム投稿タイプの登録: register_post_type関数を使用して新しいカスタム投稿タイプを登録します。
2. メタボックスの追加: カスタムフィールドや追加情報の表示エリアとして、メタボックスを追加します。
3. データ保存: メタボックスから送信されたデータを適切に保存するための関数を作成します。
4. セキュリティとパフォーマンス: カスタム投稿タイプやフィールドを使用する際は、安全性とパフォーマンスへの影響についても考慮することが重要です。
関連記事: