主页/WordPress笔记/博客文章/综合文章/如何在WordPress里隐藏你的文章不让某些用户看到

如何在WordPress里隐藏你的文章不让某些用户看到

写 Bug工程师:

在WordPress中,你可以通过多种方法来隐藏特定用户的评论或文章。这些方法包括使用角色和权限管理、自定义标签、插件等。下面我将详细介绍其中的一种方法:使用“隐藏评论”插件。

方法1: 使用“隐藏评论”插件

步骤:

  1. 安装并激活插件:

    • 登录到你的WordPress后台。
    • 在左侧菜单栏选择“插件”,然后点击“添加新插件”。
    • 搜索并找到“隐藏评论”插件(注意:这个名称可能会因版本不同而有所变化),点击“下载并安装”。
    • 安装完成后,点击“启用”。
  2. 配置插件:

    • 插件安装后,会自动显示在后台的设置页面上。
    • 你需要根据自己的需求调整一些选项,比如是否允许删除已隐藏的评论,以及可以隐藏的评论类型等。
  3. 应用更改:

    • 配置完成后,保存更改并返回主站点。
    • 现在,当你试图查看某个评论时,如果该评论被隐藏了,那么它就会被隐藏起来,无法查看。

效果:

  • 用户现在只能看到他们自己发布的评论,而不会看到其他用户的评论。
  • 这种方式对于保护个人隐私或者防止信息泄露非常有用。

示例代码:

假设你想隐藏所有非管理员用户的评论,可以使用以下PHP代码在functions.php文件中添加:

function hide_comments_for_non_admins() {
    // 获取当前用户ID
    $current_user_id = get_current_user_id();

    // 创建一个数组,存储管理员ID
    $admin_ids = array(1, 2); // 假设管理员ID为1和2

    // 如果当前用户不是管理员,则隐藏评论
    if (!in_array($current_user_id, $admin_ids)) {
        wp_cache_delete('comments', 'comment');
        add_filter('pre_get_comments', function ($comments) use ($current_user_id) {
            foreach ($comments as &$comment) {
                $comment->ping_status = '';
                $comment->comment_approved = false;
            }
            return $comments;
        });
    } else {
        remove_filter('pre_get_comments', 'hide_comments_for_non_admins');
    }
}
add_action('init', 'hide_comments_for_non_admins');

// 或者使用更简单的方法隐藏所有评论
function hide_all_comments() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'posts';
    $wpdb->query("UPDATE `$table_name` SET comment_status='closed' WHERE post_type='comment'");
}
add_action('init', 'hide_all_comments');

这段代码会在网站启动时执行,当用户尝试访问评论页时,会自动关闭所有的评论。

以上就是通过插件和代码两种方法在WordPress中隐藏评论的一些基本介绍和实现方式。希望这对你有所帮助!

黑板IDE教书匠:

在WordPress中隐藏文章可以让特定的用户无法访问它,这可以保护网站免受未经授权的访问和攻击。以下是如何实现这一功能的方法:

步骤 1: 创建一个自定义标签

首先,你需要创建一个新的自定义标签来标记需要隐藏的文章。这个标签将被用于过滤和显示文章。

步骤 2: 添加自定义标签到WordPress

  1. 登录到WordPress管理后台。
  2. 找到“编辑”菜单下的“主题”或“插件”选项卡。
  3. 在这里找到并点击“添加新文件”,然后选择“自定义标签”作为模板。
  4. 在新的页面上输入你想为隐藏文章设置的新自定义标签(例如,“private”)。
  5. 点击“保存”。

步骤 3: 配置过滤器

接下来,你需要配置过滤器以只显示包含指定自定义标签的文章。你可以使用WordPress提供的内置函数get_post()get_the_category()来查找符合条件的文章。

步骤 4: 编写过滤器

  1. 在你的插件或主题中创建一个新的PHP文件(例如my_custom_tags.php),并在其中编写如下代码:

    
    <?php
    /**
    * Filters posts by custom tags.
    */
    function my_custom_tags_filter($query) {
    // Only show posts that have the private tag.
    $query->set('post_type', 'post');
    $query->set('posts_per_page', -1);
    $query->set('meta_key', '_custom_tag');
    $query->set('meta_value', 'private');
    
    return $query;
    }

add_filter(‘pre_get_posts’, ‘my_custom_tags_filter’);

这段代码设置了过滤器,以便仅显示包含`private`自定义标签的所有文章。

### 步骤 5: 更新相关页面

为了使修改生效,请确保更新相关页面,如分类页、搜索结果等,以反映已更改的过滤条件。

**步骤 6: 测试和验证**

最后一步是测试是否按预期工作。你可以通过在不同用户组下查看文章列表来检查是否有误。

### 示例代码与说明

#### 示例代码:创建自定义标签
```html
<label for="new-tag">请输入您的自定义标签:</label>
<input type="text" name="new-tag" id="new-tag">
<button type="button" onclick="addCustomTag()">添加</button>

<script>
function addCustomTag() {
  var tag = document.getElementById("new-tag").value;
  if (tag !== "") {
    const newTag = { label: tag, slug: tag.replace(/ /g, "-") };
    wp.customize("tags", [newTag]).toJSON();
  }
}
</script>

示例代码:过滤文章

// 这个例子假设你已经有一个名为`categories`的数组,其中包含了所有分类信息。
$categories = get_categories(array(
    'orderby' => 'count',
    'order'   => 'DESC',
    'hierarchical' => true,
));

foreach ($categories as $category) {
    $category_slug = $category->slug;

    $query = new WP_Query(array(
        'post_type' => 'post',
        'tax_query' => array(
            array(
                'taxonomy' => 'categories',
                'field'    => 'term_id',
                'terms'    => $category->term_id,
            ),
        ),
    ));

    while ($query->have_posts()) : $query->the_post(); ?>
        <a href="<?php the_permalink(); ?>" class="hidden"><?php the_title(); ?></a>
    <?php endwhile; ?>

    <!-- 可能还有其他查询逻辑 -->
}

注意事项

  • 安全性: 在实际应用中,不要直接从数据库获取敏感数据(如用户名、密码等)。应使用安全的方式来存储和处理这些数据。
  • 隐私: 如果用户没有明确同意,不应随意删除或隐藏他们的帖子。尊重用户的隐私权是非常重要的。

以上就是在WordPress中隐藏文章的简单方法。根据你的具体需求,可能还需要调整和优化代码以满足不同的场景和安全要求。