仅在WordPress中显示登录用户的特定类别

时间:2014-01-17 16:38:53

标签: php wordpress function categories

我想在公开的WordPress博客中隐藏某些类别,但是可以通过登录用户查看这些类别。

如果公众访问受限制的类别,则应显示一个登录框,他们必须登录才能查看该类别

我有WordPress的is_user_logged_in函数,但不知道如何将它用于此目的。我应该将什么添加到我的functions.php中?

我已尝试过这段代码,但可以让它运行起来:

  add_action( 'init', 'check_redirect_page' );

function check_redirect_page() {
    if ( !is_user_logged_in() && !is_category( 177 ) ) {
        wp_redirect( home_url( '/login' ) );
        exit(); 
    }
}

有没有人有任何其他建议?它对我不起作用:(

2 个答案:

答案 0 :(得分:0)

<强>予。类别模板

您可以开始为要隐藏的类别构建类别模板:

http://codex.wordpress.org/Category_Templates

E.g。的类别-slug.php

在此页面上,您可以执行以下操作:

<?php if ( is_user_logged_in() ): ?> 
<?php 
    // start The Loop
    // see http://codex.wordpress.org/The_Loop
    if ( have_posts() ) : while ( have_posts() ) : the_post();
        the_content();
    // etc.
    ?>
    <?php endwhile; else: ?>
    <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
    <?php endif; ?>
<?php else:
        wp_redirect( home_url( '/login' ) );
        exit();     
endif; ?>

http://codex.wordpress.org/Function_Reference/is_user_logged_in http://codex.wordpress.org/Function_Reference/wp_login_url

此外,我假设您想要一个模式/弹出窗口供用户登录。 为此你可以尝试:

http://wordpress.org/plugins/wp-modal-login/http://wordpress.org/plugins/simplemodal-login/ - 虽然我没有测试过。

对于会员插件... http://wordpress.org/plugins/wp-members/你可以成为你的朋友。

<强> II。或者你可以试试(简单的方法):

<?php 
add_action( 'init', 'check_redirect_page' );

function check_redirect_page() {
    if ( !is_user_logged_in() && is_category( 177 ) ) {
        wp_redirect( home_url( '/login' ) );
        exit(); 
    }
}
?>

正如你所说,这段代码应该存在于你的functions.php。

答案 1 :(得分:0)

要使第二个解决方案起作用,请将[ init ]替换为[ wp ]

新代码如下:

/**
 * Make category members only and redirect non-members to login page.
 */
add_action( 'wp', 'check_redirect_page' );
function check_redirect_page() {
    if ( !is_user_logged_in() && is_category( 91 ) ) {
        wp_redirect( home_url( '/wp-admin' ) );
        exit(); 
    }
}

91 替换为您的类别ID,并将 / wp-admin 替换为您的网站登录信息。