php - 在 WordPress 中注册新用户时如何添加自定义帖子类型?
问题描述
我目前正在定制这个主题https://houzez.co/
当用户注册时,他们可以在注册时选择用户角色。例如,一个代理注册并将他们添加到后端的代理列表中,这是后端菜单项。
我在functions.php中为用户角色创建了一个自定义帖子类型
我想要做的是,每次具有自定义用户角色的用户注册时,它们都会被添加到下面的自定义帖子类型中。
/*Custom Post type start*/
function homease_post_type_insurer() {
$supports = array(
'title', // post title
'editor', // post content
'author', // post author
'thumbnail', // featured images
'excerpt', // post excerpt
'custom-fields', // custom fields
'comments', // post comments
'revisions', // post revisions
'post-formats', // post formats
);
$labels = array(
'name' => _x('Insurers', 'plural'),
'singular_name' => _x('Insurer', 'singular'),
'menu_name' => _x('View Insurers', 'admin menu'),
'name_admin_bar' => _x('Insurer', 'admin bar'),
'add_new' => _x('Add New', 'add new'),
'add_new_item' => __('Add New Insurer'),
'new_item' => __('New Insurer'),
'edit_item' => __('Edit Insurer'),
'view_item' => __('View Insurer'),
'all_items' => __('All Insurers'),
'search_items' => __('Search Insurer'),
'not_found' => __('No Insurer found.'),
);
$args = array(
'supports' => $supports,
'labels' => $labels,
'public' => true,
'query_var' => true,
'rewrite' => array('slug' => 'insurer'),
'has_archive' => true,
'hierarchical' => false,
);
register_post_type('Insurer', $args);
}
add_action('init', 'homease_post_type_insurer');
解决方案
user_register
要添加有关用户注册的新帖子,您可以使用在用户注册后触发的 WordPress 挂钩。https://developer.wordpress.org/reference/hooks/user_register/
add_action( 'user_register', 'he_create_custom_post_type_for_user' , 20, 1 );
function he_create_custom_post_type_for_user($user_id){
$user_obj = get_user_by( 'ID', $user_id );
// replace 'your_role' with the role you want.
if (in_array('your_role', (array) $user_obj->roles ) ){
// array for wp_insert_post https://developer.wordpress.org/reference/functions/wp_insert_post/
$new_post = array(
'post_title' => $user_obj->display_name , // Make the post title the name of the user
'post_type' => 'Insurer',
'post_content' => '',
'post_status' => 'publish',
'post_author' => $user_id,
);
$post_id = wp_insert_post($new_post);
// Your new post has post id $post_id - add update_post_meta ($post_id) if you want to add meta.
}
}
推荐阅读
- jenkins - 如何在没有作业失败的情况下重新启动管道中的 Jenkins 从站
- ckeditor - ReferenceError:未定义服务器 - CkEditor5
- python - 在 matplotlib 中组合条形图和线图而不移动条形图
- javascript - 将对象数组转换为对象
- php - Prestashop 模块功能执行
- elasticsearch - 调整警报 Elastic SIEM(自定义规则)
- python - 在 python 中为 json 数据创建可配置代码
- java - 我需要从 Map 中的 HTTP 请求中获取所有 MultipartFile 对象
Spring REST 应用程序中的表单 - windows - 在 Windows 上通过 JetBrains IDE(即 PyCharm)使用 Git 时如何自动使用特定的 SSH 密钥?
- okhttp - 将网络安全配置与 OkHttp 和自定义 CA 相结合