php - Wordpress:如何将 ACF 自定义帖子类型链接到 Wordpress 帐户
问题描述
所以我有高级自定义字段链接到我的自定义帖子类型,名为:成员。我想将成员字段链接到 Wordpress 用户,用户获得订阅者角色。
我的自定义帖子类型的代码如下:
function init_members() {
$labels = array(
'name' => 'Members',
'singular_name' => 'Member',
'menu_name' => 'Members',
'name_admin_bar' => 'Member',
'add_new' => 'New member',
'add_new_item' => 'New member',
'new_item' => 'New member',
'edit_item' => 'Edit member',
'all_items' => 'All members',
'search_items' => 'Search member',
'not_found' => 'No members found',
'not_found_in_trash' => 'No members found in trash'
);
$args = array(
'labels' => $labels,
'public' => true,
'exclude_from_search' => true,
'rewrite' => array('slug' => 'member'),
'has_archive' => false,
'supports' => array('title'),
'show_in_rest' => true,
'menu_icon' => 'dashicons-groups'
);
register_post_type('members', $args);
}
add_action('init', 'init_members');
function add_member_columns ( $columns ) {
unset($columns['date']);
return array_merge ( $columns, array (
'contactperson' => __ ( 'Contactperson' ),
'phone_number' => __ ( 'Phonenumber' ),
'email' => __ ( 'Email' ),
) );
}
add_filter ('manage_members_posts_columns', 'add_member_columns' );
function fill_member_columns ( $column, $post_id ) {
switch ( $column ) {
case 'contactperson':
echo get_post_meta ( $post_id, 'contactperson', true );
break;
case 'phone_number':
echo get_post_meta ( $post_id, 'phone_number', true );
break;
case 'email':
echo get_post_meta ( $post_id, 'email', true );
break;
}
}
add_action ('manage_members_posts_custom_column', 'fill_member_columns', 10, 2 );
我环顾四周,但我并没有真正找到任何关于此的帖子。
解决方案
这是一个答案...这将添加一个新用户。ACF 字段 ID 在您查看 ACF -> 工具 -> 生成 PHP 时可用
例如:
'fields' => array(
array(
'key' => 'field_5e592f61e1c2f',
'label' => 'Contact Person',
'name' => 'contactperson',
无论如何...这行得通..但您可能想要完善您的解决方案。
add_action( 'publish_members', 'so_member_add_60451627', 10, 2 );
function so_member_add_60451627($postid, $post){
// fetch post data
$name = sanitize_text_field($_POST['acf']['field_5e592f61e1c2f']); // ACF Field Key for name
$phone = sanitize_text_field($_POST['acf']['field_5e592f6fe1c30']); // ACF Field Key for phone
$email = sanitize_email($_POST['acf']['field_5e592f77e1c31']); // ACF Field Key for email
// Create Userdata Array
$userdata = array(
'user_pass' => wp_generate_password(),
'user_login' => $name,
'user_nicename' => $name,
'user_email' => $email
);
$user = wp_insert_user($userdata);
// Set user meta field for phone depending on what you want it to be called
update_user_meta($user, 'user_phone', $phone);
}
推荐阅读
- python - Javascript 与 Python 缩进
- android - Android - setContentView 中的 loadDrawableForCookie Resources$NotFoundException
- java - 此 URL Java servlet 不支持 HTTP 方法 POST
- angular - 占卜无法正常工作“无法读取 null 的属性 '1'”
- docker - 在 Go 应用程序中获取容器 IP
- r - 将数据数据转换为数据框
- python - 如何使用 OpenCV 从图像(射击目标)中裁剪出最大的圆圈
- c++ - QUdpSocket 未在 Windows 上接收数据但在 Ubuntu 上工作?
- javascript - Mongo 错误:重复键错误没有意义
- python-3.x - Python3 请求 - 削减响应