Wordpress:如何 link ACF 自定义 post 类型到 Wordpress 帐户

Wordpress: How to link ACF Custom post type to Wordpress account

因此,我将高级自定义字段 link 编辑到我的自定义 post 类型,名为:成员。 我想 link 成员字段给 Wordpress 用户,用户获得订阅者角色。

我的自定义 post 类型代码如下:

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 );

我四处看了看,但我没有真正找到任何关于此的 post。

这是一个答案...这将添加一个新用户。当您查看 ACF -> 工具 -> 生成 PHP

时,ACF 字段 ID 可用

例如:

'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);
}