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. セキュリティとパフォーマンス: カスタム投稿タイプやフィールドを使用する際は、安全性とパフォーマンスへの影響についても考慮することが重要です。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ