WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Регистрация внутри регистрации через фронтенд

Добрый день, стоит такая задача, имеется сайт для тату мастеров, суть такая, имеется роль Тату салон, он может пройти регистрацию на сайте, ему присваивается статус Тату салон, и он может зарегистрировать Мастеров таким же путем регистрации, а именно, создать для них профиль роль Мастер, с отдельным логином, почтой и паролем, как это можно будет реализовать, а то гуглю, даже не знаю как загуглить, или подскажите куда копать, на сайте уже имеется роль Мастер, он может пройти регистрацию и добавить статью через фронтенд, только нужно чтоб роль Тату мастер мог регистрировать самостоятельно роль Мастер.

спасибо за помощь заранее

Заметки к вопросу:
el-lable 1 месяц назад

Создаете собственную таксономию

/* add custom post types */
add_post_type('profiles', 'Анкеты', array(
	'supports'   => array( 'title', 'editor', 'thumbnail', 'comments' ),
	'taxonomies' => array( 'post_tag' )
));
add_post_type('persons', 'Частные лица', array(
	'supports'   => array( 'title', 'editor', 'thumbnail' ),
	'taxonomies' => array( 'post_tag' ),
	'menu_icon' => 'dashicons-businessman'
));
add_post_type('agencies', 'Организации', array(
	'supports'   => array( 'title', 'editor', 'thumbnail' ),
	'taxonomies' => array( 'post_tag' ),
	'menu_icon' => 'dashicons-groups'
));
function add_post_type($name, $label, $args = array()) {
	add_action('init', function() use($name, $label, $args) {
		$upper = ucwords($name);
		$name = strtolower(str_replace(' ', '_', $name));

		$args = array_merge(
			array(
				'public' => true,
				'label' => "$label",
				'publicly_queryable' => true,
				'show_ui' => true,
				'query_var' => true,
				'capability_type' => 'post',
				'has_archive' => true,
				'labels' => array('add_new_item' => 'Добавить'),
				'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
				'taxonomies' => array('post_tag', 'category'),
				'show_in_rest' => true,
				'menu_position' => 10,
				'menu_icon' => 'dashicons-clipboard'
			),
			$args
		);
		register_post_type($name, $args);
	});
}

это пример, далеев functions.php добавляете хук на регистрацию юзверга

/* After registration create user's post */
add_action( 'user_register', 'save_tml_registration_form_fields' );
function save_tml_registration_form_fields( $user_id ) {

	$post_id = wp_insert_post(  wp_slash( array(
		'post_status'   => 'publish',
		'post_type'     => 'persons',
		'post_author'   => $user_id,
		'post_name'     => $_POST['user_login'],
		'post_title'    => $_POST['user_login'],
		'post_content'  => '',// 'Здесь ваше описание о себе.'
		'ping_status'   => get_option( 'default_ping_status' ),
		'post_parent'   => 0,
		'menu_order'    => 0,
		'to_ping'       => '',
		'pinged'        => '',
		'post_password' => '',
		'post_excerpt'  => '',
	) ) );

	/*update_user_meta( $user_id, 'post_id', $post_id );

	update_field( 'user-id', $user_id, $post_id );

	set_acf_default_values( [
		'user-balance',
		'user-tariff',
		'tariff-free',
		'tariff-vip-1',
		'tariff-vip-2',
		'tariff-vip-3'
	], $post_id );*/

}
0
ruslan-khasanov
1 месяц назад
  • 2
    Andrew475 america-xix.ru

    Вопрос непонятно сформулирован.

    Если я правильно понял, то Вы хотите, чтобы пользователь с ролью Мастер мог создавать и редактировать свои записи, а пользователь с ролью Тату-Салон - еще и добавлять пользователей с ролью Мастер.

    В этом случае, роль Мастер создайте по образцу и подобию роли Автор, а роль Тату-Салон - - как пониженную в правах роль Администратор. Чтобы не ошибиться в делегировании прав, можно использовать какой-нибудь плагин по управлению ролями (Тимур в своё время описывал плагин User Role Editor https://wp-kama.ru/plugin/user-role-editor).

    Вам возможно также придется отфильтровать для Тату-Салона выпадающее меню "Роль" на странице добавления пользователя, чтобы нельзя было добавить пользователя с ролью, отличной от "Мастер".

    Сделать это можно с помощью хука editable roles (https://wp-kama.ru/hook/editable_roles)

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация