Как создать страницу профиля для конкретных/пользовательских участников ролей пользователей?
Я пытаюсь создать страницу профиля для каждого пользователя, если его/ее роль является пользовательской ролью.
Я создал пользовательскую роль на своем сайте. Теперь эта роль по умолчанию назначается участникам при регистрации на сайте.
У меня есть contributors.php
и authors.php
.
Если я перейду к www.mysite.com/authors
, в нем будут перечислены все пользователи без учета роли.
Затем я использовал Author Base using generate_rewrite_rules
, чтобы переписать этот URL.
Теперь, если я перейду к www.mysite.com/mycustomrole
, там будут перечислены все пользователи. Для меня это нормально.
Далее шаг для создания страницы профиля для каждого участника. Поэтому я создал author.php
Когда у меня есть пользователи ниже,
- пользователь1 - администратор
- пользователь2 - пользовательская роль
- пользователь3 - администратор
- пользователь4 - пользовательская роль
Я могу видеть страницу своего профиля вот так.
- Если я зайду в
www.mysite.com/authors/user1
, там будет показан его профиль. - Если я перейду в
www.mysite.com/authors/user2
, он не покажет свой профиль. - Если я перейду к
www.mysite.com/authors/user3
, это покажет его профиль. - Если я перейду в
www.mysite.com/authors/user4
, он не покажет свой профиль.
Поэтому я получаю индивидуальную страницу профиля только для пользователя роли administrator
, а не для моих пользователей custom created role
.
Почему это так.
На данный момент мои требования таковы:
- Я хочу получить URL-адрес для отдельного пользовательского пользователя, например:
www.mysite.com/customrole/user1
- Я хочу получить URL-адрес для отдельного пользовательского пользователя, например:
- Я хочу показывать пользователей пользовательских ролей только по этому URL-адресу. но это нормально, если я смогу показать и других пользователей ролей под этот URL.
Как я могу это сделать без использования каких-либо плагинов?
1 answers
Вы отметили, что используете пользовательские типы записей.
Чтобы понять, в этом ли проблема:
- Создайте обычную "запись" для каждого пользователя (не пользовательский тип записи)
- Посмотрите, вдруг появятся их страницы.
Если это так, то, скорее всего, ваша страница автора не настроена для показа пользовательских записей.
Чтобы исправить это, вы можете использовать что-то вроде следующего в своем funtions.php файл (или измените запрос об авторах страница):
function my_show_special_posts_on_author( WP_Query $query ) {
# Make sure you are only altering the query on the author page
if ( $query->is_author() && $query->is_main_query() && !is_admin() ) {
# Grab the current post types to be shown
$types_to_show = $query->get('post_type');
$types_to_add = array( 'custom_post_type_1', 'custom_post_type_2' );
if ( is_array($types_to_show) ) {
# Already showing an array of types, add yours if not already included
foreach ( $types_to_add as $post_type ) {
if ( !in_array($post_type, $types_to_show) ) {
$types_to_show[] = $post_type;
}
}
} else if ( empty($types_to_show) ) {
# Strange. Not showing any types. Add yours anywise.
$types_to_show = $types_to_add;
} else {
# A single one as a string, add it to your types to add then overwrite types to show
$types_to_add[] = $types_to_show;
$types_to_show = $types_to_add;
}
$query->set('post_type', $types_to_show);
}
}
add_action('pre_get_posts', 'my_show_special_posts_on_author');
Обязательно отрегулируйте линию $types_to_add = array( ... );
Это должно заставить ваши пользовательские типы записей отображаться.