Создание пользовательского типа записи при регистрации


Я изо всех сил пытаюсь найти лучшее/быстрое простое решение этой проблемы:

У меня есть плагин, который создает компании, но хранит всю информацию о компании как пользователь, поэтому вся информация находится в профиле пользователя. У меня есть еще один плагин (Geo my WP), который ищет только сообщения/страницы/cpt, но не пользователей (ну, они вроде как делают, но на основе адреса, а не других метаданных пользователя, например, категории, чего я и хочу).

Поэтому я подумал, есть ли способ, чтобы, когда пользователь создает профиль, создается cpt и сохраняет некоторые данные, например, адрес, возможно, там также хранится категория, а также метаданные публикации. Кажется излишним, но тогда мой плагин геолокации хорошо работает без кучи пользовательских изменений (если это вообще возможно).

Теперь я немного устал, если можно автоматически создать cpt и тоже обновляться при регистрации пользователя.

Или любое другое решение?

Кстати: Мне вроде как нужен Гео мой wp, так как у меня есть другие cpt, которые я хочу использовать в форма поиска.

Author: tjej2016, 2016-02-07

1 answers

Существует крючок действия user_register, который вызывается сразу после добавления пользователя в базу данных. Идентификатор пользователя передается крючку в качестве аргумента.

Вы можете использовать wp_insert_post, чтобы вставить новую запись в это действие. Вам просто нужно получить соответствующую информацию от пользователя и добавить ее в сообщение. Вы можете добавить настраиваемые поля в создаваемую запись, сославшись на идентификатор записи, возвращаемый wp_insert_post.

Это пример того, как вы могли бы добавить пользовательский тип записи в сообщение пользователя регистрация - вам, очевидно, нужно будет изменить ее в соответствии с вашими потребностями, но это должно дать вам представление о том, что делать.

/*
 * Create new custom post type post on new user registration
 */
add_action( 'user_register', 'wpse_216921_company_cpt', 10, 1 );
function wpse_216921_company_cpt( $user_id )
{
    // Get user info
    $user_info = get_userdata( $user_id );

    // Create a new post
    $user_post = array(
        'post_title'   => $user_info->nickname;
        'post_content' => $user_info->description,
        'post_type'    => 'your_company_custom_post_type', // <- change to your cpt
    );
    // Insert the post into the database
    $post_id = wp_insert_post( $user_post );

    // Add custom company info as custom fields
    add_post_meta( $post_id, 'company_id', $user_info->ID );
    add_post_meta( $post_id, 'company_email', $user_info->user_email );
}
 3
Author: Cai, 2016-02-07 00:38:58