我有一个配置文件页面设置,显示配置文件用户的信息。
网址如下:
http://example.com/?page_id=10&up_username=Steve
http://example.com/?page_id=10&up_username=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>
答案 0 :(得分:1)
您需要做的第一件事是从查询字符串中的用户名获取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的参数列表中。
将authors参数从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 );