主页/WordPress笔记/博客文章/综合文章/如何在WordPress中要求登录才能查看页面(两种简单方法)

如何在WordPress中要求登录才能查看页面(两种简单方法)

Bug编译狮

Bug编译狮

要设置在WordPress中仅允许通过登录才能访问某些页面,你可以采用两种简单的方法:使用“用户验证”插件和自定义功能。

方法一:使用“用户验证”插件

  1. 安装并激活插件

    • 登录到您的WordPress后台。
    • 导航到“插件” > “添加新插件”。
    • 在搜索框中输入“用户验证”,然后选择“User Verification”插件并点击“安装”。
    • 激活插件后,返回到“插件”页面,找到“用户验证”并点击“启用”。
  2. 配置页面权限

    • 返回到“用户验证”插件的管理界面。
    • 点击“页面/帖子”以检查哪些页面或帖子有需要验证的功能。
    • 如果您只想特定页面需要验证,请在这里勾选相应的选项。
  3. 应用规则

    • 一旦页面被标记为需要验证,当用户尝试访问该页面时,他们将看到一个提示请求验证码。
    • 用户成功提交验证码后,他们就可以访问该页面了。

示例代码与使用步骤:

假设我们想要确保所有关于产品发布的新文章只能由管理员或拥有相应角色的用户访问。

// 定义一个函数来处理文章创建事件
function restrict_product_creation() {
    // 获取当前文章
    $post = get_post();

    if ( is_single( 'product' ) && current_user_can( 'edit_posts', $post->ID ) ) { 
        // 如果文章类型是产品并且当前用户可以编辑,则阻止创建新的产品
        wp_redirect( home_url( '/' ) );
        exit;
    }
}
add_action('publish_product', 'restrict_product_creation');

这个代码片段会在用户试图创建一个新的产品时触发,如果当前用户没有足够的权限(例如,不是管理员),则会重定向到首页。

  • 步骤:
    1. 将上述代码添加到您的主题的functions.php文件中。
    2. 测试该功能,确保只有具有足够权限的用户才能创建新产品。

这种方法提供了一个简单的机制来限制对特定页面的操作,同时保持网站的灵活性和用户体验。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

要使WordPress中的某个页面对用户仅限于已登录的用户可见,你可以采用以下两种简单的方法:

方法一:使用wp_login_required()函数

原理:通过此函数,可以为特定的页面设置一个条件,即只有已经登录的用户才能访问该页面。

示例代码

function my_login_required_page() {
    if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
        // 页面内容
    }
}
add_action('template_redirect', 'my_login_required_page');

说明

  • $logged_in: 变量用于存储是否已登录的状态。
  • 如果$_SESSION[‘loggedin’]等于true,则表示用户已登录,否则表示未登录。

方法二:使用is_user_logged_in()函数

原理:此函数检查当前用户是否已经登录,如果已登录则返回true,反之则返回false。

示例代码

if (is_user_logged_in()) {
    // 用户已登录,允许访问这个页面
} else {
    // 需要管理员权限才能访问这个页面
}

说明

  • is_user_logged_in()函数会自动判断用户的登录状态,无需手动处理。

示例1:使用wp_login_required()函数实现

假设你有一个名为mypage.php的页面,你想要确保只有已登录的用户才能访问它,那么可以在该文件中添加如下代码:

<?php
// 加载需要验证的页面
require get_template_directory() . '/inc/mypage.php';

// 检查用户是否已经登录
if (!is_user_logged_in()) {
    wp_die(__('You must be logged in to view this page.', 'your-plugin'));
}

// 此处可以放置你的内容
?>

在这个例子中,我们首先加载了包含页面内容的mypage.php文件。然后,我们调用is_user_logged_in()来检查当前用户是否已登录。如果没有登录,我们使用wp_die()函数显示错误信息并跳转到登录页面。

示例2:使用is_user_logged_in()函数实现

如果你有另一个名为adminpage.php的页面,你也可以这样做:

<?php
// 加载需要验证的页面
require get_template_directory() . '/inc/adminpage.php';

// 检查用户是否已经登录
if (!is_user_logged_in()) {
    wp_die(__('You must be logged in to access this page.', 'your-plugin'));
}

// 此处可以放置你的内容
?>

在这种情况下,我们同样加载了一个包含页面内容的文件,并且使用is_user_logged_in()检查当前用户是否已登录。如果没有登录,我们会显示警告消息并重定向到登录页面。