簡體   English   中英

與個人資料用戶的自定義循環

[英]Custom Loop with profile user

我有一個配置文件頁面設置,用於顯示配置文件用戶的信息。

URL如下:

  • 用戶1(“史蒂夫”用戶ID:10): http://example.com/?page_id=10&up_username=Steve : http://example.com/?page_id=10&up_username=Steve =10& http://example.com/?page_id=10&up_username=Steve Steve
  • 用戶2(“ Ryan”用戶ID:35): http://example.com/?page_id=10&up_username=Ryan : http://example.com/?page_id=10&up_username=Ryan Ryan

現在,我有一個自定義帖子循環,以顯示各個用戶上傳的帖子,如下所示:

<?php
if ( get_query_var('paged') ) {

        $paged = get_query_var('paged');

    } elseif ( get_query_var('page') ) {

        $paged = get_query_var('page');

    } else {

        $paged = 1;

    }

    $args = array(          
        'paged'=>$paged,
        'posts_per_page' => 10,
        'product_cat' => '',
        'orderby' => 'date',            
        'order' => 'DESC',
        'author' => ''
        );
    $loop = new WP_Query( $args );
    global $product, $userpro, $post, $paged ; 
    while ( $loop->have_posts() ) : $loop->the_post(); 
?>

在這里, author arg為空。 因此它加載作者(管理員)的帖子。 無論您位於哪個個人資料頁面,它都只會顯示管理員的帖子。

場景:Ryan的帖子(用戶ID = 35)

 'author' => '35'

如果我以35作為作者,那么無論您查看哪個個人資料,它都只會顯示Ryan的帖子。

但是,這是我擁有的個人資料頁面標題,其中顯示了“實際”個人資料用戶。

<?php echo userpro_profile_data('display_name', $user_id); ?>

通過以上操作,它將實際顯示配置文件用戶,而不是'author' => '35'

如何更改自定義循環中的'author'部分,以便顯示個人資料用戶的帖子?

謝謝。

編輯:

這是基於@Nathan Dawson答案的新代碼:

     <div class="rfp_hide" id="rhm_profile_item">
    <?php
    if ( get_query_var('paged') ) {
        $paged = get_query_var('paged');
    } elseif ( get_query_var('page') ) {
        $paged = get_query_var('page');
    } else {
        $paged = 1;
    }       
    // Default to false in case user can't be found.
    $user_id  = false;
    // Clean username variable before use.
    $username = ( ! empty( $_GET['up_username'] ) ) ? sanitize_text_field( $_GET['up_username'] ) : false;
    // Check for user ID.
    if ( $username && $user = get_user_by( 'slug', $username ) ) {
        $user_id = $user->ID;
    }   
    $args = array(      
        'paged'=>$paged,
        'posts_per_page' => 10, 
        'orderby' => 'date',            
        'order' => 'DESC',  
    );
    if ( $user_id ) {
        $args['author'] = $user_id;
    }       
    $loop = new WP_Query( $args );
    global $userpro, $post, $paged, $user_id ; 
    while ( $loop->have_posts() ) : $loop->the_post(); 
    ?>
    <div class="rhm_container">
        Post contents goes here  
    </div>      
    <?php endwhile; ?>
        <?php wp_reset_postdata(); ?>   

    </div>  

您需要做的第一件事是從查詢字符串中的用戶名獲取WordPress用戶ID。

// Default to false in case user can't be found.
$user_id  = false;

// Clean username variable before use.
$username = ( ! empty( $_GET['up_username'] ) ) ? sanitize_text_field( $_GET['up_username'] ) : false;

// Check for user ID.
if ( $username && $user = get_user_by( 'slug', $username ) ) {
    $user_id = $user->ID;
}

獲得ID后,可以將其添加到WP_Query的參數列表中。

將author參數從arguments數組中取出,並在添加之前檢查您是否具有用戶ID。

$args = array(          
    'paged'          => $paged,
    'posts_per_page' => 10,
    'product_cat'    => '',
    'orderby'        => 'date',            
    'order'          => 'DESC',
);

if ( $user_id ) {
    $args['author'] = $user_id;
}

$loop = new WP_Query( $args );

暫無
暫無

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

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