概要
woocommerce_after_register_post_type
は、WooCommerceでカスタム投稿タイプの登録処理が完了した後に呼ばれるアクションフックです。このフックを使用することで、新たに登録されたカスタム投稿タイプに対して追加の操作や設定を施すことができます。このアクションは、特に以下のような機能を実装する際によく使用されます。
- カスタムフィールドの追加
- メタボックスの追加
- サイドバーウィジェットの設定
- 管理画面のカスタマイズ
- 新しい投稿の初期状態設定
- カスタムタクソノミーの追加
構文
do_action('woocommerce_after_register_post_type', $post_type);
パラメータ
$post_type
: 登録されたカスタム投稿タイプの名前。
戻り値
このアクションは何も返しません。
使用可能なバージョン
- WooCommerce: 3.0 以降
- WordPress: 4.0 以降
サンプルコード
サンプルコード1:カスタムメタボックスの追加
このコードは、特定のカスタム投稿タイプにメタボックスを追加します。
add_action('woocommerce_after_register_post_type', 'add_custom_metabox');
function add_custom_metabox($post_type) {
if ('product' === $post_type) {
add_meta_box('custom_metabox', 'カスタムメタボックス', 'custom_metabox_callback', 'product');
}
}
function custom_metabox_callback($post) {
echo '<p>ここにカスタムメタボックスの内容を追加します。</p>';
}
引用元: https://developer.wordpress.org/reference/functions/add_meta_box/
サンプルコード2:カスタムフィールドの追加
カスタム投稿タイプに対してカスタムフィールドを追加する例です。
add_action('woocommerce_after_register_post_type', 'add_custom_fields');
function add_custom_fields($post_type) {
if ('product' === $post_type) {
register_post_meta($post_type, 'custom_field', array(
'type' => 'string',
'single' => true,
'sanitize_callback' => 'sanitize_text_field',
'auth_callback' => function() {
return current_user_can('edit_posts');
},
));
}
}
引用元: https://developer.wordpress.org/reference/functions/register_post_meta/
サンプルコード3:新規投稿の初期データの設定
新しい商品投稿が作成される際、デフォルト値を設定する例です。
add_action('woocommerce_after_register_post_type', 'set_default_product_values');
function set_default_product_values($post_type) {
if ('product' === $post_type) {
add_action('wp_insert_post', 'set_product_default_values', 10, 2);
}
}
function set_product_default_values($post_id, $post) {
if ($post->post_type === 'product' && $post->post_status === 'publish') {
update_post_meta($post_id, '_price', '0');
}
}
引用元: https://developer.wordpress.org/reference/functions/update_post_meta/
サンプルコード4:カスタムタクソノミーの追加
カスタム投稿タイプにカスタムタクソノミーを追加する例です。
add_action('woocommerce_after_register_post_type', 'add_custom_taxonomy');
function add_custom_taxonomy($post_type) {
if ('product' === $post_type) {
register_taxonomy('custom_taxonomy', $post_type, array(
'label' => __('カスタムタクソノミー'),
'rewrite' => array('slug' => 'custom-taxonomy'),
'hierarchical' => true,
));
}
}
引用元: https://developer.wordpress.org/reference/functions/register_taxonomy/
サンプルコード5:投稿タイプの管理画面のカスタマイズ
カスタム投稿タイプの管理画面に新しいカラムを追加する例です。
add_action('woocommerce_after_register_post_type', 'custom_admin_columns');
function custom_admin_columns($post_type) {
if ('product' === $post_type) {
add_filter('manage_product_posts_columns', 'add_new_column');
add_action('manage_product_posts_custom_column', 'show_new_column_data', 10, 2);
}
}
function add_new_column($columns) {
$columns['new_column'] = '新しいカラム';
return $columns;
}
function show_new_column_data($column, $post_id) {
if ($column === 'new_column') {
echo 'カラムのデータ';
}
}
引用元: https://developer.wordpress.org/reference/hooks/manage_posts_custom_column/
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |