概要
post_type_exists 関数は、指定された投稿タイプがすでに存在するかどうかを調べるために使用されます。この関数は、カスタム投稿タイプや標準投稿タイプの存在を確認する際に便利です。以下のようなシナリオでよく使われます。
- カスタム投稿タイプを条件に基づいて登録する場合
- 特定の投稿タイプの存在を確認して処理を分岐させる場合
- 管理画面でカスタム投稿タイプを表示または非表示にする場合
- 投稿タイプ特有のメタデータを取得する場合
- フィルターハンドラやアクションフックで投稿タイプの存在を確認する場合
- 投稿タイプに基づいてテンプレートファイルを選択する場合
- プラグインやテーマの設定に基づいて投稿タイプを変更する場合
- 有効なエディタや設定を条件に投稿タイプを新規作成する場合
構文
post_type_exists( string $post_type )
パラメータ
post_type(string): 存在を調べる投稿タイプ名。
戻り値
- (bool): 投稿タイプが存在する場合は
true、存在しない場合はfalse。
関連する関数
使用可能なバージョン
- 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 |
サンプルコード
サンプル1: 投稿タイプの存在確認
if ( post_type_exists( 'book' ) ) {
echo '投稿タイプ "book" は存在します。';
} else {
echo '投稿タイプ "book" は存在しません。';
}
// このサンプルは、指定した投稿タイプが存在するか確認する例です。
引用元: https://example.com/sample1
サンプル2: カスタム投稿タイプの条件付き登録
add_action( 'init', function() {
if ( ! post_type_exists( 'movie' ) ) {
register_post_type( 'movie', [
'label' => 'Movies',
'public' => true,
]);
}
});
// このサンプルは、特定の投稿タイプが存在しない場合のみ新規登録を行う例です。
引用元: https://example.com/sample2
サンプル3: 投稿タイプを条件にしたメタデータ取得
function get_movie_rating( $post_id ) {
if ( post_type_exists( 'movie' ) ) {
return get_post_meta( $post_id, 'movie_rating', true );
}
return null;
}
// このサンプルは、指定した投稿タイプに基づいてメタデータを取得する例です。
引用元: https://example.com/sample3
サンプル4: 投稿タイプによる条件分岐
if ( is_single() && post_type_exists( 'product' ) ) {
// 商品ページの場合の処理
}
// このサンプルは、特定の投稿タイプの投稿の場合にのみ処理を行う例です。
引用元: https://example.com/sample4
サンプル5: テンプレート選択の条件に利用
function load_template_by_post_type( $template ) {
if ( post_type_exists( 'portfolio' ) && is_post_type_archive( 'portfolio' ) ) {
$template = locate_template( 'archive-portfolio.php' );
}
return $template;
}
add_filter( 'template_include', 'load_template_by_post_type' );
// このサンプルは、指定した投稿タイプのアーカイブがある場合にカスタムテンプレートを読み込む例です。
引用元: https://example.com/sample5