web-dev-qa-db-fra.com

Comment créer une page de profil pour les membres de rôles spécifiques/personnalisés?

J'essaie de créer une page de profil pour chaque utilisateur si son rôle est personnalisé.

J'ai créé un rôle personnalisé sur mon site. Maintenant, c'est le rôle par défaut qui est attribué aux membres lorsqu'ils s'inscrivent sur le site.

J'ai contributors.php et authors.php. Si je vais à www.mysite.com/authorsit, la liste de tous les utilisateurs sans considérer le rôle. Ensuite, j'ai utilisé Author Base using generate_rewrite_rules pour réécrire cette URL.

Maintenant, si je vais à www.mysite.com/mycustomrole, il liste tous les utilisateurs. C'est bon pour moi.

Prochaine étape pour créer une page de profil pour chaque membre. J'ai donc créé author.php

Quand j'ai les utilisateurs ci-dessous,

  • utilisateur1 - administrateur
  • user2 - rôle personnalisé
  • utilisateur3 - administrateur
  • user4 - rôle personnalisé

Je suis capable de voir leur page de profil comme ceci.

  • Si je vais à www.mysite.com/authors/user1, il montre son profil.
  • Si je vais à www.mysite.com/authors/user2, il ne montre pas son profil.
  • Si je vais à www.mysite.com/authors/user3, il montre son profil.
  • Si je vais à www.mysite.com/authors/user4, il ne montre pas son profil.

Je reçois donc une page de profil individuelle uniquement pour l'utilisateur du rôle administrator et non pour mes utilisateurs custom created role. Pourquoi donc.

Pour l'instant mes exigences sont:

    1. Je souhaite obtenir l'URL d'un utilisateur personnalisé tel que: www.mysite.com/customrole/user1
    1. Je souhaite afficher les utilisateurs de rôle personnalisé uniquement sous cette URL. mais c'est bien si je suis capable de montrer également les autres utilisateurs du rôle sous cette URL.

Comment puis-je faire ce WOTHOUT en utilisant des plugins?

1
Riffaz Starr

Vous avez noté que vous utilisez des types de publication personnalisés.

Pour voir si c'est le problème:

  1. Créer une "publication" normale pour chaque utilisateur (pas un type de publication personnalisé)
  2. Voir si leurs pages apparaissent soudainement.

Si tel est le cas, il est fort probable que votre page d’auteur ne soit pas configurée pour afficher les messages personnalisés.

Pour résoudre ce problème, vous pouvez utiliser les éléments suivants dans votre fichier funtions.php (ou modifier la requête sur la page des auteurs):

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

Assurez-vous de régler la ligne $types_to_add = array( ... );

Cela devrait forcer l'affichage de vos types de publication personnalisés.

1
Privateer