概要
cptui_pre_save_post_type
は、WordPress の Custom Post Type UI プラグインで使用されるフックです。このフックは、新しいカスタム投稿タイプが保存される直前に実行されます。このアクションを活用することで、投稿タイプの設定を変更したり、カスタムデータの検証を行ったりするといった機能を実装する際によく使用されます。以下は、よく使われる機能の例です。
- カスタム投稿タイプのデフォルト設定の変更
- 必要なフィールドの追加や既存フィールドの修正
- 投稿タイプの権限設定のカスタマイズ
- カスタムメタフィールドの初期値設定
- テーマに関連するカスタム設定の自動登録
- エラーメッセージの表示やログの作成
cptui_pre_save_post_type アクションの概要
- 構文:
add_action('cptui_pre_save_post_type', 'your_custom_function', 10, 1);
- パラメータ:
$post_type
(string): 現在保存しようとしているカスタム投稿タイプのスラッグが渡されます。
- 戻り値: 特に戻り値はありませんが、関数内で必要に応じて任意のデータを処理できます。
- Custom Post Type UI のバージョン: 1.0 およびそれ以降
- WordPress のバージョン: 4.0 およびそれ以降
サンプルコード
サンプルコード1: カスタムフィールドを設定する
このサンプルでは、新しいカスタム投稿タイプが保存される際に、デフォルトメタフィールドの値を設定しています。
add_action('cptui_pre_save_post_type', 'set_default_custom_field', 10, 1);
function set_default_custom_field($post_type) {
if ($post_type == 'my_custom_post') {
// 'my_custom_field' というフィールドにデフォルト値を設定
update_option('my_custom_field', 'default_value');
}
}
- これは特定のカスタム投稿タイプの保存時に、特定のフィールドにデフォルト値を設定するサンプルです。
サンプルコード2: 投稿タイプの権限をカスタマイズする
このサンプルコードは、カスタム投稿タイプの権限(Caps)を変更します。
add_action('cptui_pre_save_post_type', 'custom_post_type_capabilities', 10, 1);
function custom_post_type_capabilities($post_type) {
if ($post_type == 'my_custom_post') {
// 'edit_my_custom_posts' の権限を必要とするように変更
$caps = array(
'edit_post' => 'edit_my_custom_post',
'read_post' => 'read_my_custom_post',
'delete_post' => 'delete_my_custom_post',
);
register_post_type($post_type, array('capabilities' => $caps));
}
}
- 投稿タイプに対するユーザー権限をカスタマイズするサンプルです。
サンプルコード3: エラーメッセージの処理
このサンプルでは、不正なデータが入力された場合にエラーメッセージを表示する例です。
add_action('cptui_pre_save_post_type', 'validate_custom_post_type', 10, 1);
function validate_custom_post_type($post_type) {
if ($post_type == 'my_custom_post' && empty($_POST['my_field'])) {
add_settings_error('my_custom_post', 'error', 'フィールドには値を入力してください。');
}
}
- フィールドが空の場合にエラーメッセージを追加する処理の例です。
サンプルコード4: 投稿タイプの表示名を変更
このサンプルコードは、カスタム投稿タイプのラベル名を変更する例です。
add_action('cptui_pre_save_post_type', 'change_post_type_labels', 10, 1);
function change_post_type_labels($post_type) {
if ($post_type == 'my_custom_post') {
$args = [
'labels' => [
'name' => '新しい名前',
'singular_name' => '新しい単数名',
],
];
register_post_type($post_type, $args);
}
}
- 特定の投稿タイプの表示名を変更するサンプルです。
サンプルコード5: カスタムデータの追加処理
このサンプルは、新しいデータが保存される直前に特定のデータを取得して処理します。
add_action('cptui_pre_save_post_type', 'add_custom_data_before_save', 10, 1);
function add_custom_data_before_save($post_type) {
if ($post_type == 'my_custom_post') {
// データを取得して未来の処理を行う
$custom_data = get_option('some_option');
// 保存処理を記述
}
}
- 保存直前にカスタムデータを取得する例です。
この関数のアクションでの使用可能性
アクション名 | 使用可能性 |
---|---|
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 |