Auteur invité - Comment afficher les articles sur/author/page d'archive
J'ai utilisé le plugin Champs personnalisés avancés pour créer tous les éléments de données d'une page de répertoire de direction d'entreprise et de bio-pages de gestion.
Sur le blog du site, la direction ne publiera pas d’articles eux-mêmes, mais il devrait sembler qu’ils l’ont été. Je pense que cette pratique est appelée "auteurs invités" - des auteurs qui n'ont pas de compte d'utilisateur sur le site WordPress où le contenu est affiché en leur nom par les administrateurs du site.
Ce que j'aimerais arriver, c'est ceci:
- Lorsqu'un auteur invité est sélectionné pour la publication (un objet de publication personnalisé ACF ), affiche son nom. Le nom doit renvoyer à la page d’archive www.example.com/author/john-doe.
- Lorsqu'un auteur de quête n'est pas sélectionné, les informations sur l'auteur de l'administrateur du site sont définies par défaut.
- Je ne veux PAS créer de comptes d'utilisateurs fantômes à publier en tant qu'auteurs invités. (Comme mentionné, ces auteurs invités ont déjà été définis en détail dans le type de poste de direction d’équipe, en combinaison avec ACF.)
Je suis relativement nouveau dans le développement de thèmes WordPress et cherche Google pour y parvenir. Ces deux publications sont les plus proches de ma situation mais ne résolvent pas ce que j'essaie de faire:
- Auteur invité - Comment utiliser des champs personnalisés pour créer un lien d’auteur invité?
- Auteur invité - Comment modifier mon code de fonction personnalisé si l'URL de l'auteur invité doit suivre un modèle/format particulier?
Est-ce une pratique courante? Si oui, quelqu'un peut-il me diriger vers plus d'informations? Je l'apprécierais beaucoup!
METTRE À JOUR
Je vais un peu y arriver. Jusqu’à présent, j’ai réussi à écrire un lien personnalisé pour les publications d’auteurs s’il existe un auteur invité.
L'URL résultant pour un auteur de publication et un auteur invité a maintenant des formats correspondants…
post auteur ex: www (point) exemple.com/author/john-doe auteur invité ex: www (point) exemple.com/author/jane-doe
Maintenant, je dois juste comprendre comment détourner la page d’archives de l’auteur pour afficher les posts de l’auteur du post OR l’auteur invité.
FONCTIONS.PHP CODE:
add_filter( 'the_author_posts_link', 'custom_author_posts_link' );
function custom_author_posts_link($url) {
`global $post;
$post_object = get_field('post_author');
if ( $post_object ) {
`// GUEST AUTHOR EXISTS - override post object to grab relevant guest author info
global $post;
$post = $post_object;
setup_postdata( $post );
$guest_author_slug = $post->post_name;
$guest_author_name = get_field('team_member_name');
$guest_author_posts_link = site_url() . '/author/' . $guest_author_slug;
$guest_url = sprintf(
'<a href="%1$s" title="%2$s" rel="author">%3$s</a>',
esc_url( $guest_author_posts_link ),
esc_attr( sprintf( __( 'Posts by %s' ), $guest_author_name ) ),
$guest_author_name
);
$guest_url = $link;
wp_reset_postdata(); // We're done here. Return to main $post object
`
}
return $url;
`
}
MISE À JOUR 2
J'ai retravaillé un peu les choses. Au lieu de "détourner" la page d'archive d'auteur, j'ai modifié le filtre "the_author_posts_link" afin qu'il pointe vers un type de publication personnalisé, lorsque cela convient. Chacun de mes trois types d’auteurs dispose maintenant d’un point de terminaison sur lequel je peux afficher sa bio et son activité.
Les publications de blog utilisent des champs personnalisés avancés qui permettent à certains éléments de publication de sélectionner les objets de publication des deux types de publication pertinents, Leadership d'équipe et Collaborateurs invités.
add_filter( 'the_author_posts_link', 'custom_author_posts_link' );
function custom_author_posts_link($url) {
global $post;
// Check if a post author is defined in the post_author post object. If none is defined, override will not occur and default post author will display
$post_object = get_field('post_author');
if ( $post_object ) {
// Post author exists. Override post object to grab relevant guest author info.
global $post;
$post = $post_object;
setup_postdata( $post );
$author_type = get_field('author_type');
$author_slug = $post->post_name;
$author_name = get_field('author_name');
// Use the post author type to determine the author link
if ( strtolower($author_type) == 'guest contributor' ){
$author_posts_link = site_url() . '/guest-contributor/' . $author_slug;
} else {
$author_posts_link = site_url() . '/leadership-team/' . $author_slug;
}
// Format the link to return. This is based off the default filter (See WordPress: https://core.trac. wordpress.org/browser/tags/4.1/src/wp-includes/author-template.php)
$guest_url = sprintf(
'<a href="%1$s" tit le="%2$s" rel="author">%3$s</a>',
esc_url( $author_po sts_link ),
esc_attr( sprintf( __( 'Posts by %s' ), $author_name ) ),
$author_name
);
$url = $guest_url;
wp_reset_postdata(); // We're done here, return to main $post object
}
return $url;
}
Vous auriez pu vous épargner une tonne de travail et simplement utiliser le plugin Co-Authors Plus. Il a une fonction d'auteur invité. Vous devez les configurer, mais il n'y a pas de compte/mot de passe pour eux, et ils peuvent avoir des pages auteur. (Je ne suis pas affilié à eux, utilisez-le sur plusieurs sites.)
Si vous voulez que quelque chose se comporte comme un auteur "normal" de wordpress, la meilleure chose à faire est de créer un compte "factice", et si vous voulez vraiment désactiver la possibilité de vous connecter. Pour toute autre solution qui imite la fonctionnalité d’une autre manière, vous devez d’abord bien comprendre la fonctionnalité que vous essayez d’imiter, et par vos propres mots suis relativement nouveau dans le développement de thèmes WordPress "....