get_posts - รับโพสต์ทั้งหมดโดย id ผู้เขียน


11

ฉันต้องการได้รับการโพสต์ทั้งหมดโดย id ผู้เขียนบางคน (ผู้ใช้ปัจจุบัน) ต่อมาฉันต้องการเลือกโพสต์แรกที่สร้างโดยผู้ใช้นี้ (ASC) ฉันเดาว่าฉันไม่ได้ใช้อาร์กิวเมนต์ที่ถูกต้องใน get_posts ใช่ไหม? $ current_user_posts มี Array พร้อมโพสต์บล็อกทั้งหมดใน WP_Post Object ที่แตกต่างกันหลายรายการ

global $current_user;
get_currentuserinfo();                      

$args = array(
    'author'        =>  $current_user->ID, // I could also use $user_ID, right?
    'orderby'       =>  'post_date',
    'order'         =>  'ASC' 
    );

// get his posts 'ASC'
$current_user_posts = get_posts( $args );

1
get_currentuserinfo () เลิกใช้แล้วตั้งแต่รุ่น 4.5.0 แทนที่ด้วย:$current_user = wp_get_current_user();
Christian Lescuyer

คำตอบ:


19

ฉันสับสนเล็กน้อย หากคุณต้องการรับเฉพาะอิลิเมนต์จากแถวโพสต์คุณสามารถรับได้ดังนี้:

  • รีเซ็ต ($ current_user_posts) - โพสต์แรก
  • สิ้นสุด ($ current_user_posts) - lat post

แต่ถ้าคุณต้องการโพสต์เพียงหนึ่งโพสต์get_posts()คุณสามารถใช้posts_per_pageอาร์กิวเมนต์เพื่อ จำกัด ผลลัพธ์

$args = array(
    'author'        =>  $current_user->ID,
    'orderby'       =>  'post_date',
    'order'         =>  'ASC',
    'posts_per_page' => 1
    );

ข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ที่คุณสามารถรับได้ในหน้าการอ้างอิงระดับ WP Query ( get_posts()รับพารามิเตอร์เดียวกับ WP Query)


1
$ args ทำงานได้ดี แต่ฉันไม่ได้รับคำตอบแรกของคุณ วิธีใช้ $ current_user_posts แสดงให้ฉันดูได้ไหม?
ครับ

echo $current_user_posts[0]['title']หากคุณต้องการที่จะพิมพ์ชื่อของโพสต์แรกที่คุณควรใช้: 'ชื่อ' เป็นกุญแจสำคัญสำหรับสิ่งที่คุณต้องการจากอาร์เรย์ print_r(array_keys($current_user_posts))รายการเต็มรูปแบบของคีย์ที่คุณได้รับกับ Cang "วิธีใช้" ขึ้นอยู่กับสิ่งที่คุณต้องการจะทำ
Marin Bînzari

รับ id โพสต์แรกของผู้เขียน
kindo

คุณสามารถรับ ID ได้ด้วย: $ current_user_posts [0] ['ID']
Marin Bînzari

@kindo ช่วยได้ไหม? นี่เป็นคำตอบที่คุณต้องการหรือไม่?
Marin Bînzari

6
global $current_user;                     

$args = array(
  'author'        =>  $current_user->ID, 
  'orderby'       =>  'post_date',
  'order'         =>  'ASC',
  'posts_per_page' => -1 // no limit
);


$current_user_posts = get_posts( $args );
$total = count($current_user_posts);

และเพียงแค่วนโพสต์ของผู้ใช้ปัจจุบัน


คุณช่วยอธิบายได้ไหมว่าโค้ดข้างต้นทำอะไรนอกจากการโพสต์โค้ดมันจะมีประโยชน์ขอบคุณ
bravokeyl

1

มันทำงานโดย (wp4.9.7)

 $user_id = get_current_user_id();
 $args=array(
 'post_type' => 'POSTTYPE',
 'post_status' => 'publish',
 'posts_per_page' => 1,
 'author' => $user_id
  );

$current_user_posts = get_posts( $args );
$total = count($current_user_posts);
wp_die( '<pre>' .  $total . '</pre>' );
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.