0

我正在爲每個至少擁有作者憑證的用戶自動創建自定義帖子類型的帖子(jt_cpt_team)。使用wp_insert_post爲每個用戶自動創建帖子

首先,它需要爲管理員創建的每個新用戶執行此操作。如果有一種簡單的方法爲每個現有作者(〜30)生成一篇文章,那麼這很好,但如果需要的話,我不介意手動做這些文章。

我猜這或多或少是我需要的—努力讓它工作,雖然…

class team_functions { 

    public function __construct() { 

    add_action('user_register', array($this, 'create_authors_page')); 

    } 

    public function create_authors_page($user_id) { 

    $the_user  = get_userdata($user_id); 
    $new_user_name = $the_user->user_login; 
    $my_post  = array(); 
    $my_post['post_title'] = $new_user_name; 
    $my_post['post_type'] = 'jt_cpt_team'; 
    $my_post['post_content'] = ''; 
    $my_post['post_status'] = 'publish'; 
    $my_post['post_theme'] = 'user-profile'; 

    wp_insert_post($my_post); 

    } 

} 

而且,如果有一種方法來添加作者的電子郵件作爲custom_field這將是真棒。

預先感謝您的幫助:)

回答

1

像這樣的東西應該工作:

public function create_authors_page($user_id) { 

    $the_user  = get_userdata($user_id); 
    $new_user_name = $the_user->user_login; 
    $PostSlug  = $user_id; 
    $PostGuid  = home_url() . "/" . $PostSlug; 

    $my_post = array('post_title' => $new_user_name, 
         'post_type' => 'jt_cpt_team', 
         'post_content' => '', 
         'post_status' => 'publish', 
         'post_theme' => 'user-profile', 
         'guid'   => $PostGuid); 

    $NewPostID = wp_insert_post($my_post); // Second parameter defaults to FALSE to return 0 instead of wp_error. 

    // To answer your comment, adding these lines of code before the return should do it (Have not tested it though): 
    $Key = $new_user_name; // Name of the user is the custom field KEY 
    $Value = $user_id; // User ID is the custom field VALUE 
    update_post_meta($NewPostID, $Key, $Value); 

    return $NewPostID; 
    } 
+0

輝煌 - 就像一個魅力! :) 謝謝。 – richerimage

+0

另一件事 - 我想用作者ID填充一個'custom_field' - 這可能在這個函數中嗎?謝謝。 – richerimage

+0

@richerimage更新了答案。 –