2026年10月29日

2026年10月29日

WordPressのmanage_posts_columnsで列を追加する方法

はじめに

この記事では、WordPressのダッシュボードで「投稿一覧」ページに新しい列を追加するためのmanage_posts_columnsフィルターハックについて紹介します。カスタムメタデータや特定の情報を簡単に表示するために役立つ機能です。

症状・背景

このテーマが必要になる主な場面:

  • カスタムメタボックスから取得した情報の列を追加したい場合
  • 投稿の更新日時以外のカスタム日付を表示するため
  • 特定の投稿タイプで特定の情報を一覧表示したい場合
  • 他のプラグインのデータを統合して表示したい場合

手順・設定方法

ステップ1: manage_posts_columnsフィルターを有効にする

# フィルター関数を呼び出すPHPコードを作成します。
function custom_post_column($columns) {
    // 新しい列の情報を追加
    $new_columns = array(
        'custom_meta' => __('カスタムメタデータ', 'textdomain'),
        'last_updated' => __('最終更新日時', 'textdomain')
    );

    // 元々の列と新しい列を組み合わせます。
    return array_merge($columns, $new_columns);
}
add_filter('manage_posts_columns', 'custom_post_column');

ステップ2: manage_posts_custom_columnアクションを使用してカラムの内容を表示

# 新しい列に値を出力します。
function custom_column_content($column_name, $post_id) {
    switch ($column_name) {
        case 'custom_meta':
            // カスタムメタデータを読み込みます。
            echo get_post_meta($post_id, 'your_custom_key', true);
            break;
        case 'last_updated':
            // 最終更新日時を表示します。
            $updated_time = get_the_date('Y-m-d H:i:s', $post_id);
            echo $updated_time;
            break;
    }
}
add_action('manage_posts_custom_column', 'custom_column_content', 10, 2);

ステップ3: カスタムフィールドの情報を取得して表示

# カスタムメタデータを更新する関数を作成します。
function update_custom_meta($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;

    $meta_value = $_POST['custom_meta'];
    update_post_meta($post_id, 'your_custom_key', sanitize_text_field($meta_value));
}
add_action('save_post', 'update_custom_meta');

ステップ4: 画面の更新やエラーハンドリングを確認

# 管理者の権限チェックとフィルターエラーを表示します。
if (!current_user_can('edit_posts'))
    return;

// フィルターが有効かどうかをチェック
if (has_action('manage_posts_custom_column', 'custom_column_content')) {
    echo "カスタム列の表示設定は正常に動作しています。";
} else {
    error_log("エラー: manage_posts_columnsフィルターやアクションが正しくセットアップされていません。");
}

注意事項

  • 管理者権限のチェックを必ず行う。
  • セキュリティのために、すべてのユーザー入力を適切に洗浄(sanitize)する。
  • 投稿タイプやメタボックス情報が変更された場合、コードも更新すること。
  • パフォーマンス面で影響がないことを確認し、必要なら非同期処理を検討。

まとめ

1. カスタム列の追加: manage_posts_columnsフィルターを使用して新しい列を作成します。

2. カラムの内容表示: manage_posts_custom_columnアクションを使って各列に値を出力します。

3. メタデータの更新: save_postアクションでカスタムフィールド情報を保存します。

4. 権限とエラーハンドリング: 安全かつ効果的に動作するためのチェックポイントです。

関連記事:

お気軽にご相談ください

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