概要
cptui_post_type_slug_exists
関数は、ワードプレスのプラグイン Custom Post Type UI に含まれています。この関数は、指定されたスラッグのカスタム投稿タイプが既に存在するかどうかを確認するために使用されます。特に、カスタム投稿タイプの作成や管理時に重複を避けるために役立ちます。
この関数は、以下のようなシナリオでよく使われます:
- 新しいカスタム投稿タイプを作成する際に、ユーザーが入力したスラッグが既に存在しているかを確認する。
- プラグインの設定画面でスラッグの重複を防ぐ。
- テーマの機能でカスタム投稿タイプを動的に登録する場合に、既存のスラッグとの衝突を確認する。
- 他のプラグインと連携する際に、カスタム投稿タイプの衝突を避ける。
- スラッグをカスタマイズするためのフィルターを設定する際に、そのスラッグの存在を確認する。
- マルチサイト環境で特定のサイトがカスタム投稿タイプを持っているかを検証する。
構文
cptui_post_type_slug_exists( $slug );
パラメータ
$slug
(string) – チェックしたいカスタム投稿タイプのスラッグ。
戻り値
- (bool) – スラッグが存在する場合は
true
、存在しない場合はfalse
を返します。
バージョン
- Custom Post Type UI: 1.0.0 以上
- WordPress: 4.0 以上
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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: スラッグの存在チェック
$slug = 'my_custom_post';
if (cptui_post_type_slug_exists($slug)) {
echo "スラッグ '{$slug}' は既に存在しています。";
} else {
echo "スラッグ '{$slug}' は使用可能です。";
}
このコードは、指定したスラッグが既に存在するかをチェックし、その結果に応じてメッセージを表示します。
サンプル 2: フォームでのスラッグ確認
if ($_POST['submit']) {
$slug = sanitize_text_field($_POST['slug']);
if (cptui_post_type_slug_exists($slug)) {
echo 'このスラッグは既に存在します。別のものを試してください。';
} else {
// スラッグを使って何か処理する
}
}
ユーザーが入力したスラッグが既に使用されているかを確認し、メッセージを表示します。
サンプル 3: グローバル変数との比較
global $my_custom_post_slug;
if (cptui_post_type_slug_exists($my_custom_post_slug)) {
error_log("カスタム投稿タイプのスラッグ '{$my_custom_post_slug}' が衝突しています。");
}
グローバル変数に設定されたスラッグが既に存在しているかどうかをエラーログに記録します。
サンプル 4: プラグイン初期化時の確認
add_action('plugins_loaded', function() {
if (cptui_post_type_slug_exists('event')) {
deactivate_plugins(plugin_basename(__FILE__));
wp_die('イベントカスタム投稿タイプのスラッグは既に存在します。');
}
});
プラグインの読み込み時に、特定のスラッグが存在する場合にプラグインを無効化します。
サンプル 5: カスタム投稿タイプのスラッグを動的に生成
function create_dynamic_post_type() {
$slug = 'dynamic_slug_' . time();
if (!cptui_post_type_slug_exists($slug)) {
register_post_type($slug, ['public' => true, 'label' => 'Dynamic Posts']);
}
}
add_action('init', 'create_dynamic_post_type');
現在の時間を基にしたユニークなスラッグを生成し、それが存在しない場合にカスタム投稿タイプを登録します。