概要
get_post_types_by_support 関数は、特定のサポート機能(例:エク抜き、エディター、サムネイルなど)を持つ投稿タイプ名を取得するための関数です。この関数は、特定の機能を利用したい場合や、カスタム投稿タイプの管理を行う際に便利です。よく使われるシナリオには以下のようなものがあります。
- カスタム投稿タイプのフィーチャーを確認する
- 投稿タイプを条件にしたウィジェットを作成する
- 特定の投稿タイプに対して、カスタムフィールドを表示したい場合
- 投稿タイプの一覧から特定の条件を満たすものを抽出する
- プラグインの設定画面で投稿タイプを選択させる
- 特定のサポート機能を持つ投稿タイプのフィルタリング
- カスタム投稿のサポート機能に基づいて異なるUIを提供する
- APIエンドポイントを設計する際の条件指定
構文
get_post_types_by_support( $supports, $operator = 'or' );
パラメータ
$supports(string|array): 検索するサポート機能の名称。複数指定する場合は配列で渡すことができる。$operator(string): すべてのサポート機能が必要な場合は'and'、いずれかのサポート機能が必要な場合は'or'。デフォルトは'or'。
戻り値
指定されたサポート機能を持つ投稿タイプのスラッグの配列。
関連する関数
使用可能なバージョン
get_post_types_by_support 関数は WordPress 2.9.0 以降で利用可能です。また、特定のバージョンで非推奨または削除された情報はありません。
コアファイルのパス
get_post_types_by_support 関数は、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: 特定のサポート機能を持つ投稿タイプの取得
$supported_post_types = get_post_types_by_support('thumbnail');
foreach ($supported_post_types as $post_type) {
echo $post_type . '<br>';
}
このサンプルは「サムネイル」機能を持つ投稿タイプ名を取得して表示します。投稿にサムネイルを設定できる投稿タイプを一覧化する際に利用できます。
サンプルコード2: 複数のサポート機能に基づいた投稿タイプの取得
$supported_post_types = get_post_types_by_support(array('editor', 'thumbnail'));
foreach ($supported_post_types as $post_type) {
echo $post_type . '<br>';
}
このコードは「エディター」および「サムネイル」の機能を持つ投稿タイプを取得し、表示します。複数機能でフィルタリングしたい場合に便利です。
サンプルコード3: サポート機能の条件で投稿タイプを処理
if (in_array('page', get_post_types_by_support('excerpt'))) {
echo 'ページ投稿タイプは抜粋をサポートしています。';
}
このコードは「抜粋」機能を持つ投稿タイプが「ページ」に含まれているかを確認し、その結果を出力します。
サンプルコード4: サポート機能に応じたカスタムウィジェットの作成
$supported_post_types = get_post_types_by_support('custom-fields');
foreach ($supported_post_types as $post_type) {
register_widget('My_Custom_Widget_'.$post_type);
}
このサンプルでは、カスタムフィールドをサポートしている投稿タイプごとにカスタムウィジェットを登録します。
サンプルコード5: APIエンドポイントでの使用
add_action('rest_api_init', function () {
$post_types = get_post_types_by_support('thumbnail', 'or');
register_rest_route('myplugin/v1', '/post-types', array(
'methods' => 'GET',
'callback' => function () use ($post_types) {
return $post_types;
},
));
});
このコードは、REST APIのエンドポイントを通じてサムネイルをサポートする投稿タイプ名を提供します。APIを利用したアプリケーション開発に役立ちます。