it-swarm.com.de

Gastautor - So zeigen Sie Beiträge auf der Seite/author/archive an

Ich habe das Plugin für erweiterte benutzerdefinierte Felder verwendet, um alle Datenelemente für eine Unternehmensleiterverzeichnisseite und Verwaltungsbioseiten zu erstellen.

Auf dem Site-Blog veröffentlicht das Management keine Artikel selbst, aber es sollte so aussehen, als ob dies der Fall wäre. Ich denke, diese Praxis wird als "Gastautoren" bezeichnet - Autoren, die keine Benutzerkonten auf der WordPress-Site haben, auf der die Inhalte von Site-Administratoren in ihrem Namen veröffentlicht werden.

Was ich gerne machen würde, ist Folgendes:

  1. Wenn ein Gastautor für den Beitrag ausgewählt ist (ein benutzerdefiniertes ACF-Beitragsobjekt ), geben Sie dessen Namen aus. Der Name sollte auf die Archivseite www.example.com/author/john-doe verweisen.
  2. Wenn kein Questautor ausgewählt ist, wird standardmäßig die Autoreninformation des Site-Administrators verwendet.
  3. Ich möchte KEINE Ghost-Benutzerkonten erstellen, um sie als Gastautoren zu veröffentlichen. (Wie bereits erwähnt, wurden diese Gastautoren bereits im Rahmen des Team Leadership Post-Typs in Kombination mit ACF detailliert definiert.)

Ich bin relativ neu in der Entwicklung von WordPress-Themes und habe nach einer Möglichkeit gegoogelt, dies zu erreichen. Diese beiden Posts sind die nächsten, die ich zu meiner Situation finden konnte, lösen aber nicht, was ich versuche:

Ist das eine gängige Praxis? Wenn ja, kann mich jemand zu weiteren Informationen weiterleiten? Ich würde es sehr schätzen!

AKTUALISIEREN

Ich komme irgendwie dahin. Bisher konnte ich einen benutzerdefinierten Link für Autorenbeiträge erstellen, wenn ein Gastautor vorhanden ist.

Die resultierende URL für einen Postautor und einen Gastautor hat jetzt übereinstimmende Formate ...

autor des Beitrags ex: www (Punkt) example.com/author/john-doe Gastautor ex: www (Punkt) example.com/author/jane-doe

Jetzt muss ich nur noch herausfinden, wie die Autorenarchivseite entführt werden kann, um die Beiträge des Beitragsautors OR des Gastautors anzuzeigen.

FUNCTIONS.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;
`

}

UPDATE 2

Ich habe die Dinge ein bisschen überarbeitet. Anstatt die Autorenarchivseite zu "hijacken", habe ich den Filter "the_author_posts_link" so geändert, dass er auf einen benutzerdefinierten Beitragstyp verweist, wenn dies angebracht ist. Jetzt hat jeder meiner drei Autorentypen einen Endpunkt, an dem ich ihre Biografie und Aktivität anzeigen kann.

In den Blog-Posts werden erweiterte benutzerdefinierte Felder verwendet, in denen Post-Objekte aus den beiden relevanten Post-Typen Teamleitung und Gastbeitragende ausgewählt werden.

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;

}
1
emkmail2

Sie hätten sich eine Menge Arbeit sparen und einfach das Co-Authors Plus-Plugin verwenden können. Es hat eine Gastautorenfunktion. Sie müssen sie einrichten, aber es gibt kein Konto/Passwort für sie und sie können Autorenseiten haben. (Ich bin nicht mit ihnen verbunden, benutze es nur auf mehreren Websites.)

1
user2961664

Wenn Sie möchten, dass sich etwas wie ein "normaler" WordPress-Autor verhält, erstellen Sie am besten ein "Dummy" -Konto und deaktivieren Sie die Möglichkeit, sich bei diesem anzumelden. Für jede andere Lösung, die die Funktionalität auf andere Weise nachahmt, müssen Sie zuerst die Funktionalität, die Sie nachahmen möchten, vollständig verstehen und mit Ihren eigenen Worten "I bin relativ neu in der Entwicklung von WordPress-Themes "....

0
Mark Kaplun