概要
get_post_type_object関数は、指定した投稿タイプの詳細な情報を取得するために使用されます。この関数は、カスタム投稿タイプや標準の投稿タイプ(例:投稿、ページ)の設定やプロパティを取得する際に便利です。具体的には、以下の機能実装の際によく使われます:
- 投稿タイプの柔軟な表示のためのカスタマイズ
- 特定の投稿タイプに基づくメタボックスの追加
- 投稿リストの表示形式をカスタマイズ
- 投稿タイプごとの権限チェック
- カスタムクエリの条件設定
- 投稿タイプの概要表示
- テンプレートの条件分岐
- ユーザーインターフェースのカスタマイズ
構文
get_post_type_object( string $post_type );
パラメータ
$post_type(string) : 取得したい投稿タイプのスラッグ。
戻り値
- 取得した投稿タイプのオブジェクト。指定した投稿タイプが存在しない場合は、
nullを返します。
関連する関数
使用可能なバージョン
- WordPress 2.9.0 以降
コアファイルのパス
wp-includes/post.php
この関数のアクションでの使用可能性
| アクション | 使用可能 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | 〇 |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | 〇 |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
-
投稿タイプのオブジェクトを取得するサンプル
$post_type_object = get_post_type_object('post'); if ($post_type_object) { echo '投稿タイプのラベル: ' . $post_type_object->label; }説明:
postというスラッグの投稿タイプオブジェクトを取得し、そのラベルを表示します。 -
カスタム投稿タイプの情報を表示するサンプル
$custom_post_type = 'portfolio'; $post_type_object = get_post_type_object($custom_post_type); if ($post_type_object) { echo 'カスタム投稿タイプ: ' . $post_type_object->labels->singular_name; }説明:
portfolioというカスタム投稿タイプのオブジェクトを取得し、その単数形のラベルを表示します。 -
投稿タイプに基づくカスタムメタボックスの追加サンプル
add_action('add_meta_boxes', function() { $post_type_object = get_post_type_object('product'); add_meta_box('product_details', $post_type_object->labels->singular_name . '詳細', 'render_product_details', 'product'); }); function render_product_details() { echo 'ここに詳細を入力します。'; }説明:
product投稿タイプに基づいたメタボックスを追加するサンプルです。 -
特定の投稿タイプの権限チェックサンプル
if (current_user_can('edit_posts')) { $post_type_object = get_post_type_object('event'); echo 'このユーザーは ' . $post_type_object->labels->name . ' を編集できます。'; }説明:
eventという投稿タイプのオブジェクトを取得し、その編集権限があるかをチェックします。 -
カスタムクエリを作成するサンプル
add_action('pre_get_posts', function($query) { if (is_post_type_archive('news')) { $query->set('posts_per_page', 5); } });説明:
newsというカスタム投稿タイプのアーカイブページにおいて表示する投稿の数を制限するサンプルです。
これらのコードは、すべて著作権フリーのサンプルです。