WordPress – Kommentare auf Autorenseiten zulassen

Lesezeit: 3 Minuten

Benutzer-Avatar
Zach Nikodemous

Ich muss Benutzern erlauben, Kommentare auf Autorenprofilseiten zu hinterlassen.

Ich bin hier auf eine andere Antwort gestoßen, die mir einen grundlegenden Überblick darüber gegeben hat, was getan werden muss, um dies zu ermöglichen: https://wordpress.stackexchange.com/questions/8996/author-page-comments-and-ratings

Allerdings bin ich mir nicht sicher, wie ich mit der Umsetzung fortfahren soll. Ich habe einen benutzerdefinierten Beitragstyp erstellt, um die Kommentare zu speichern, aber ich weiß nicht, wie ich es schaffen soll, dass jedes Mal, wenn sich ein Benutzer/Autor auf unserer Website anmeldet (wir bauen eine Website mit offener Registrierung), ein Beitrag erstellt wird den benutzerdefinierten Beitragstyp, um Kommentare zu enthalten, und dann automatisch mit ihrem Benutzerprofil verknüpft.

Ich würde mich sehr über eine detailliertere Antwort als die auf der verknüpften Frage angegebene freuen, damit ich genau verstehen kann, wie ich dies zum Laufen bekomme.

Danke schön

Benutzer-Avatar
Anand Thakkar

Eigentlich braucht man das Zeug einfach mit dem Haken user_register Aktion wie

function my_user_register($user_id){

    $user = get_user_by( 'id', $user_id );

    /**
     * if required you can limit this profile creation action to some limited 
     * roles only
     */

    /**
     * Created new Page under "user_profile_page" every time a new User 
     * is being created
     */

    $profile_page = wp_insert_post(array(
        'post_title'        => " $user->display_name Profile ", // Text only to Map those page @ admin
        'post_type'         => "user_profile_page", // Custom Post type which you have created 
        'post_status'       => 'publish',
        'post_author'       => $user_id,
    ));

    /**
     * Save the Profile Page id into the user meta
     */
    if(!is_wp_error($profile_page))
        add_user_meta($user_id,'user_profile_page',$profile_page,TRUE);
}

/**
 * Action which is being trigger Every time when a new User is being created
 */
add_action('user_register','my_user_register');

Der obige Code ist etwas, das Sie tatsächlich im ursprünglichen Beitrag vermissen https://wordpress.stackexchange.com/questions/8996/author-page-comments-and-ratings Nachdem Sie also den obigen Code hinzugefügt haben, müssen Sie dem einfach folgen Autor.php genauso wie dieser Code

$profile_page = get_the_author_meta('user_profile_page');

global $post;
$post = get_post($profile_page);

setup_postdata( $post ); 

//fool wordpress to think we are on a single post page
$wp_query->is_single = true;
//get comments
comments_template();
//reset wordpress to ture post
$wp_query->is_single = false;

wp_reset_query();

  • Vielen Dank für diese umfassende Antwort. Ich habe dies implementiert und funktioniert jetzt! 🙂

    – Zach Nikodemous

    21. Dezember 2015 um 11:01 Uhr

Sie können einen neuen Filter mit der wp_insert_user-Funktion verknüpfen (wenn Sie sie zum Einfügen von Benutzern im Registrierungsschritt verwenden), indem Sie den insert_user_meta-Hook verwenden, sodass dieser Filter nach dem Erstellen eines neuen Benutzers vor dem Speichern im Meta-Array aufgerufen wird. Hier ist der Beispielcode, der hilfreich sein könnte:

<?php
add_filter('insert_user_meta', 'nl_associate_cp_to_user', 10, 3);
function nl_associate_cp_to_user($meta, $user, $update ){
    $meta['cpid_for_comments'] = nl_get_new_cpid_for_comments();
    return $meta;
}

function nl_get_new_cpid_for_comments(){
    $data = array(
        'post_type'    => 'CCPT',
        'post_title'    => 'Stub Post',
        'post_content'  => '',
        'post_status'   => 'publish',
        'post_author'   => 1,
    );

    $post_id = wp_insert_post( $data );
    if(!is_wp_error($post_id)) return $post_id; 
}
?>

Sie können Ihre user-author.php-Datei mit dem folgenden Code aktualisieren.

<?php
           //save blog Id
            $blog_id = $post->ID;
           // now map your post with author post
            $author_post_id = get_user_meta($user_id, author_post_id,blog);
            query_posts("p=$author_post_id");
            the_post();
           //Your are in a single post page
           $wp_query->is_single = blog;
          //get comments
          comments_template();
          //reset wordpress to particular post
          $wp_query->is_single = false;
          query_posts("p=$blog_id");
         the_post();
    ?>

Sie müssen verstehen, dass wir hier von der Blog-ID für den jeweiligen Blog ausgehen. Bitte lassen Sie mich wissen, wenn Sie mit anderen Problemen konfrontiert sind.

1369660cookie-checkWordPress – Kommentare auf Autorenseiten zulassen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy