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/authors
it, 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,
Je suis capable de voir leur page de profil comme ceci.
www.mysite.com/authors/user1
, il montre son profil.www.mysite.com/authors/user2
, il ne montre pas son profil.www.mysite.com/authors/user3
, il montre son profil.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:
www.mysite.com/customrole/user1
Comment puis-je faire ce WOTHOUT en utilisant des plugins?
Vous avez noté que vous utilisez des types de publication personnalisés.
Pour voir si c'est le problème:
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.