是否可以在用户登录后显示用户帖子

时间:2013-06-18 作者:James Xu

我有网站,管理员为每个注册用户设置了一个帖子,只有这个用户在登录时才能看到。(帖子的作者是用户的姓名)。我认为当用户登录时,只要搜索与作者姓名相等的用户名就可以了。

问题是如何做到这一点,我对PHP了解不多,很难让它工作。

他是一些代码,也许有用。

  <?php
if ( is_user_logged_in() ) {
echo \'Welcome, registered user!\';
} else {
echo \'Welcome, visitor!\';
}
?>

2 个回复
SO网友:Mike Madern

您可以使用获取当前用户IDget_current_user_id( ):

$user_id = get_current_user_id( );
用户ID可用于获取用户数据get_userdata( ):

$user_data = get_userdata( $user_id );
有了这些信息,你应该能够用WP_Query.
例如(按用户nicename):

$query = new WP_Query( \'author_name=rami\' );
将这一切结合在一起,您可以创建如下内容:

if ( is_user_logged_in( ) ) {
  $user_id = get_current_user_id( );
  $user_data = get_userdata( $user_id );

  $query = new WP_Query( \'author_name=\' . $user_data->user_nicename );

  if( $query->have_posts( ) ) {
    while( $query->have_posts( ) ) {
      $query->the_post( );

      // The Loop
    }
  }
} else {
  // A visitor
}
您可以对代码稍加修改,以获得一篇文章WP_Query 但你肯定会更进一步。

SO网友:Krzysiek Dróżdż

我会考虑按user\\u id进行搜索,而不是按用户nicename进行搜索。用户可以更改他的nicename,所以您必须同步它(每次用户更改他的nicename时都更新用户的页面)。

按nicename选择也比按用户id选择慢得多。

使用

$query = new WP_Query( array(\'author\'=>$user_id, ...<OTHER QUERY PARAMS YOU ALREADY USE>) );
当然,您还应该注意不要将此帖子/页面显示给其他用户。

结束

相关推荐