[英]Custom Loop with profile user
我有一個配置文件頁面設置,用於顯示配置文件用戶的信息。
URL如下:
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 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.