簡體   English   中英

Wordpress WP_Query $args,顯示已發布的帖子和當前用戶的待處理帖子

[英]Wordpress WP_Query $args, show published posts AND the current user's pending posts

在我的 Wordpress 網站上,用戶可以在群牆上寫自己的帖子。 我想在群牆上顯示所有已發布的帖子。 我還想向作為這些帖子作者的當前用戶顯示待處理的帖子。 現在當用戶提交一個新帖子時,沒有顯示關於它的信息,他們可能不知道他們的帖子是否被提交。 我想向他們展示他們待處理的帖子以及他們需要等待帖子審查的信息。

有沒有辦法將邏輯添加到WP_Query$args中? 這是我現在的代碼:

    //number of posts per page default
    $num =5;
    //page number
    $paged = $_POST['page'] + 1;
    
    $current_user = wp_get_current_user();
    $uid = $current_user->ID;
    
    //args
    $meta_query = array();
    $meta_query[] = array('key' => 'pm_accessible_groups','value' => sprintf(':"%s";',1),'compare' => 'like');
    $args = array(
        'post_type' => 'pg_groupwalls',
        'post_status' => 'publish',
        'posts_per_page' =>$num,
        'meta_query' => $meta_query,
        'paged'=>$paged
    );
    
    
    
    //query
    $query = new WP_Query($args);
    //check
    if ($query->have_posts()):
        //loop
        while ($query->have_posts()): $query->the_post();

后來我有了我的模板。 這樣,它現在只顯示已發布的帖子。 我試圖在這里找到一些關於它的信息: https://developer.wordpress.org/reference/classes/wp_query/ ,后來我嘗試將$args數組更改為如下所示:


    //number of posts per page default
    $num =5;
    //page number
    $paged = $_POST['page'] + 1;
    
    $current_user = wp_get_current_user();
    $uid = $current_user->ID;
    
    //args
    $meta_query = array();
    $meta_query[] = array('key' => 'pm_accessible_groups','value' => sprintf(':"%s";',1),'compare' => 'like');
    $args = array(
        'post_type' => 'pg_groupwalls',
        'post_status' => array (
             'relation' => 'AND',
             array(
                  'post_status' => 'publish',
             ),
             array(
                  'post_status' => 'pending',
                  'author' => $uid,
             ),
        ),
        'posts_per_page' =>$num,
        'meta_query' => $meta_query,
        'paged'=>$paged
    );
    
    
    
    //query
    $query = new WP_Query($args);
    //check
    if ($query->have_posts()):
        //loop
        while ($query->have_posts()): $query->the_post();

這很可能不是這樣做的方法,顯然,它不能按我想要的方式工作。 它向所有用戶(不僅僅是作為作者的當前用戶)顯示已發布和待處理的帖子。 我也許可以創建一個新的 WP_Query,但這個已經分頁,每頁顯示 5 個帖子,帶有“加載更多”按鈕,我不想打破分頁。

有沒有辦法使用$args數組創建這個邏輯? 或任何其他方式來實現我想要的? 先感謝您。

如果需要更多信息或更多代碼,我會嘗試更新它。

試試下面的代碼。

//number of posts per page default
$num = 5;

//page number
$paged = $_POST['page'] + 1;

$current_user = wp_get_current_user();
$uid          = $current_user->ID;

//args
$meta_query   = array();
$meta_query[] = array(
    'key'     => 'pm_accessible_groups',
    'value'   => sprintf(':"%s";',1),
    'compare' => 'like'
);

對於所有發布帖子。

$publish_args = array(
    'post_type'      => 'pg_groupwalls',
    'post_status'    => array( 'publish' ),
    'posts_per_page' => $num,
    'meta_query'     => $meta_query,
    'paged'          => $paged
);

//query
$publish_posts = new WP_Query( $publish_args );

//check
if ( $publish_posts->have_posts() ):
    //loop
    while ($publish_posts->have_posts()): $publish_posts->the_post();

    endwhile;

    wp_reset_postdata();

endif;

對於當前用戶的所有待處理帖子。

$pending_args = array(
    'post_type'      => 'pg_groupwalls',
    'post_status'    => array( 'pending' ),
    'post_author'    => $uid,
    'posts_per_page' => $num,
    'meta_query'     => $meta_query,
    'paged'          => $paged
);

//query
$pending_posts = new WP_Query( $pending_args );

//check
if ( $pending_posts->have_posts() ):
    //loop
    while ($pending_posts->have_posts()): $pending_posts->the_post();

    endwhile;

    wp_reset_postdata();

endif;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM