2015-12-09 27 views
6

Potrzebuję umożliwić użytkownikom dodawanie komentarzy do stron profilu autora.WordPress - Zezwalanie na komentarze na stronach autorskich

natknąłem innej odpowiedzi tutaj, że dał mi ogólny zarys tego, co należy zrobić, aby zezwolić na: https://wordpress.stackexchange.com/questions/8996/author-page-comments-and-ratings

Powiedział, że jestem pewien, jak postępować z coraz to realizowane. Stworzyłem niestandardowy typ postu do przechowywania komentarzy, ale nie wiem, jak to zrobić, aby za każdym razem, gdy użytkownik/autor zapisywał się do naszej witryny (budujemy witrynę z otwartą rejestracją), post został utworzony w niestandardowy typ postu do przechowywania komentarzy, a następnie automatycznie powiązany z ich profilem użytkownika.

Byłbym wdzięczny za bardziej szczegółową odpowiedź niż to, co zostało zawarte w połączonym pytaniu, dzięki czemu jestem w stanie dokładnie zrozumieć, jak to zrobić.

Wiele Dzięki

Odpowiedz

3

Właściwie trzeba po prostu zaczepić rzeczy z user_register działaniu jak

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

Powyższy kod jest coś, co w rzeczywistości brakuje Oryginalny post https://wordpress.stackexchange.com/questions/8996/author-page-comments-and-ratings Więc po dodaniu powyższego kodu, po prostu trzeba to zrobić ponad autor.php to samo, co , kod

$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(); 
+0

Dziękuję bardzo za tę wyczerpującą odpowiedź. Mam to już wdrożone i działające! :) –

0

można podłączyć nowy filtr do funkcji wp_insert_user (jeśli używasz go wstawić użytkownika na etapie rejestracji) za pomocą insert_user_meta hak, więc po utworzeniu nowego użytkownika, filtr ten będzie nazwany na meta tablica przed zapisaniem. Oto przykładowy kod, który może być pomocny:

<?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; 
} 
?> 
0

Możesz zaktualizować plik user-author.php poniższym kodem.

<?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(); 
    ?> 

Musisz zrozumieć, że zakładamy, że dla bloga mamy identyfikator bloga. proszę dać mi znać, jeśli są inne problemy, z którymi stoisz.