Как создать страницу профиля для конкретных/пользовательских участников ролей пользователей?


Я пытаюсь создать страницу профиля для каждого пользователя, если его/ее роль является пользовательской ролью.

Я создал пользовательскую роль на своем сайте. Теперь эта роль по умолчанию назначается участникам при регистрации на сайте.

У меня есть 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. Почему это так.

На данный момент мои требования таковы:

    1. Я хочу получить URL-адрес для отдельного пользовательского пользователя, например: www.mysite.com/customrole/user1
    1. Я хочу показывать пользователей пользовательских ролей только по этому URL-адресу. но это нормально, если я смогу показать и других пользователей ролей под этот URL.

Как я могу это сделать без использования каких-либо плагинов?

Author: Riffaz Starr, 2015-01-26

1 answers

Вы отметили, что используете пользовательские типы записей.

Чтобы понять, в этом ли проблема:

  1. Создайте обычную "запись" для каждого пользователя (не пользовательский тип записи)
  2. Посмотрите, вдруг появятся их страницы.

Если это так, то, скорее всего, ваша страница автора не настроена для показа пользовательских записей.

Чтобы исправить это, вы можете использовать что-то вроде следующего в своем 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( ... );

Это должно заставить ваши пользовательские типы записей отображаться.

 1
Author: Privateer, 2015-01-26 19:00:02