如何限制我授权的用户访问单曲?

时间:2017-11-17 作者:Alex F

我有一个WordPress网站,不需要任何登录或用户注册。然而,我刚刚在我的网站上创建了一个页面,我想限制我自己添加的用户。我希望每个用户都有自己的特定凭据,以便我可以跟踪他们登录的时间/地点。例如,我希望John Smith能够查看我的受限页面。因此,我将创建一个用户名J\\u Smith和一个密码pass4321!。然后,他可以使用这些凭据登录并查看页面。

我已经研究了一些插件来实现这一点,但它们似乎只根据WordPress用户权限限制对页面的访问。我要注册的人没有任何访问WordPress开发的权限,但会像其他访问者一样通过URL访问该网站。只有他们拥有正确的登录凭据,才能查看此额外页面。

有没有办法用插件做到这一点?我看过这个插件https://wordpress.org/plugins/restrict-user-access/ 还有这个https://wordpress.org/plugins/restrict-content/ 没有运气。

我当前的WordPress主题功能。php文件如下所示:

<?php
/**
 *  Envision Multipurpose Theme (2013) - ThemeForest
 *  functions.php which does and tells WordPress to load CloudFW and the theme.
 *
 *              (Ya-Settar, Ya-Gaffar, Ya-Fettâh)
 *  @author     Orkun GURSEL
 *              <ticket:    support.cloudfw.net>
 *              <email:     [email protected]>
 *              <twitter:   @orkungursel, @cloudfw>
 *
 *  @package    WordPress
 *  @subpackage CloudFw
 *  @subpackage Envision
 */
/** Globals */

global $cloudfw_start, $cloudfw_memory;
$time = microtime();
$time = explode(" ", $time);
$time = $time[1] + $time[0];
$cloudfw_start = $time;
$cloudfw_memory = memory_get_usage();

/** Defines */
if ( !defined(\'TMP_PATH\') )         define( \'TMP_PATH\', get_template_directory() . \'/\' );
if ( !defined(\'TMP_URL\') )          define( \'TMP_URL\', get_template_directory_uri() );
if ( !defined(\'CLOUDFW_TMP_PATH\') ) define( \'CLOUDFW_TMP_PATH\', dirname(__FILE__) );

/**
 *  Load & Run CloudFw
 */
require( TMP_PATH.\'/cloudfw/cloudfw.loader.php\' );

1 个回复
SO网友:Nikki Mather

不需要任何插件就可以很容易地做到这一点。如果您只需要使用自己创建的帐户访问单个页面,请尝试使用以下内容创建页面模板。注意:您应该创建任何新帐户作为subscriber.

<?php 

    /*
        Template Name: Private Page
    */

    get_header(); 
?>
<?php 
    if( current_user_can(\'subscriber\') {  ?> 
             // stuff here
<?php } else { 
    echo do_shortcode(\'[frontend-login-form]\');
} ?>

<?php get_footer(); ?>
在上面的示例中,我们有一个短代码,它来自下面的代码,您应该将其添加到functions.php 文件

function frontend_user_manager_init() {
    add_shortcode( \'frontend-login-form\', \'frontend_login_form\' );
}
add_action(\'init\', \'frontend_user_manager_init\');
/**
 * Print a login form or current user login
 *
 * @param array $atts An array of arguments
 * @return string The form mark-up or the current user login
 */
function frontend_login_form( $atts ){
    if( ! is_user_logged_in() ){
        $args = array(
            \'echo\'          => false,
            \'remember\'      => true,
            \'redirect\'      => get_permalink(),
            \'form_id\'       => \'loginform\',
            \'id_username\'       => \'user_login\',
            \'id_password\'       => \'user_pass\',
            \'id_remember\'       => \'rememberme\',
            \'id_submit\'     => \'wp-submit\',
            \'label_username\'    => __( \'Username\' ),
            \'label_password\'    => __( \'Password\' ),
            \'label_remember\'    => __( \'Remember Me\' ),
            \'label_log_in\'      => __( \'Log In\' ),
            \'value_username\'    => \'\',
            \'value_remember\'    => false
        );
        $output = wp_login_form( $args );
    }else{
        $current_user = wp_get_current_user();
        $output = \'<p>\' . sprintf( __( \'Howdy %s\' ), $current_user->user_login ) . \'</p>\';
        $output .= \'<p>\' . wp_loginout( get_permalink(), false ) . \'</p>\';
    }
    return $output;
}
// Process shortcodes in text widgets
add_filter(\'widget_text\', \'do_shortcode\');
订阅者角色的访问权限非常有限,即仅允许用户维护其配置文件,但是如果您不想允许,请尝试将以下代码添加到您的functions.php 文件

add_action( \'init\', \'blockusers_init\' );
function blockusers_init() {
    if ( is_admin() && ! current_user_can( \'administrator\' ) && ! ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) ) {
        wp_redirect( home_url() );
        exit;
    }
}

结束

相关推荐

有关.htaccess和wp-login.php预防的问题

我注意到一个“错误”。我在教程中读到的htaccess规则。我试图做的是阻止访问wp登录。php使用非常常见。htaccess规则如下:<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} ^(.*)?wp-login\\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteCond %{REMOTE_A