Hide Author page from others

时间:2015-10-05 作者:Coalition Partners

我正在使用author.php 作为作者页。我已经将作者基础slug更改为profile,这样帖子作者就可以在网站上查看他们的作者页面。com/配置文件/名称

由于这些基本上是个人资料页,我不想让公众看到他们,所以如果你访问网站。com/profile/name,并且没有登录,应该要求您登录。如果您登录并访问其他人的个人资料页面的URL,它会将您重定向回您的个人资料。我被这件事困住了。我在另一篇帖子中发现了这一点,我认为这是一个开始:

<?php 
add_action( \'template_redirect\', \'wpse14047_template_redirect\' );
function wpse14047_template_redirect()
{
  if ( is_author() ) {
    $id = get_query_var( \'author\' );
    // get_usernumposts() is deprecated since 3.0
    $post_count = count_user_posts( $id );
    if ( $post_count <= 0 ) { 
        //include( STYLESHEETPATH .\'/author-redirect.php\' );
        wp_redirect( home_url() );
        exit;
    }
  }
}

1 个回复
最合适的回答,由SO网友:cybmeta 整理而成

如果我理解正确的话,像您这样基于帖子计数的重定向是错误的。您需要检查当前用户是否与作者的个人资料相同;如果是相同的,什么都不做,它是不一样的,重定向到自己的配置文件;如果是来宾用户,请重定向到登录页面:

add_action( \'template_redirect\', \'cyb_template_redirect\' );
function cyb_template_redirect() {

    // Check if we are on author template
    if ( is_author() ) {

        // Check if current user is logged in
        if( is_user_logged_in() ) {

             // User is logged in

             // Get the id of the user being displayed
             $viewing_profile_id = get_query_var( \'author\' );

             // Get the id of current user
             $current_user_id = get_current_user_id();

            // if current user and profile being displayed is not the same,
            // then redirect to current user author page
            if ( $viewing_profile_id != $current_user_id ) {

                wp_redirect( get_author_posts_url( $current_user_id ) );
                exit;

            }

        } else {

            // User is not logged in, redirect to login with redirect parameter
            // set to current user profile url, so the user will be redirected to
            // own profile if login is successful
            wp_redirect( wp_login_url( get_author_posts_url( $current_user_id ) ) );
            exit;

        }

    }
}
注意:代码未经测试,仅在此处编写

相关推荐

Change default login auth

我将增强我的WordPress身份验证页面。我的想法很简单,就是更改过程以检查密码,就像使用用户名或电子邮件登录的默认过程一样。我已经更改了数据库,添加了额外的字段“code”:我的目标是:the user can login with your username or email and with your password or code.然而,我不知道哪个部分的编码是用来验证密码的,因为我想参考现有的编码。