自定义循环与配置文件用户

时间:2015-08-27 23:50:01

标签: php jquery wordpress

我有一个配置文件页面设置,显示配置文件用户的信息。

网址如下:

  • 用户1(“Steve”用户ID:10):http://example.com/?page_id=10&up_username=Steve
  • 用户2(“Ryan”用户ID:35):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>  

1 个答案:

答案 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 );