主页/WordPress笔记/博客文章/综合文章/如何在 WordPress 中强制每篇文章只属于一个分类

如何在 WordPress 中强制每篇文章只属于一个分类

Bug编译狮

Bug编译狮

要确保每个文章都只能归属于一个分类,在 WordPress 中有几种方法可以实现这一目标。这里我将介绍一种常见的方法:使用 post__not_in 条件语句来限制文章的分类选择。

步骤 1: 创建或编辑分类

首先,你需要创建或编辑一个分类(例如“测试分类”),然后为这个分类添加一些文章。

步骤 2: 编辑文章页面

接下来,打开你的 WordPress 文章页面(通常是通过点击文章标题进入)。在这里,你可以看到文章的分类字段。

步骤 3: 添加条件语句

在文章分类字段旁边有一个下拉菜单,这就是我们用来设置分类的选择器。我们将在这个下拉菜单中应用我们的条件语句。

示例代码:

<select name="category">
    <option value="">请选择分类...</option>
    <?php
        // 遍历所有可用的分类
        $categories = get_categories();

        // 遍历并检查每个分类是否被文章所属
        foreach ($categories as $category) {
            if (!in_array($category->term_id, (array)$post->ID)) { // 确保当前文章不归属该分类
                echo "<option value='$category->term_id'>$category->name</option>";
            }
        }
    ?>
</select>

解释:

  • $categories: 这个数组包含了所有的可用分类。
  • in_array($category->term_id, (array)$post->ID): 这个函数用于检查当前文章是否已分配到某个分类。如果 $post->ID 不在 $category->term_id 的集合中,则说明文章未被该分类所分配。
  • echo ““;: 对于每个分类,我们都将其作为选项展示出来,但同时在 <option> 标签内嵌入了一个 value 属性,该属性值与分类 ID 相关联。

使用效果:

当你选择一个分类时,只有那个分类下的文章才会出现在下拉列表中供用户选择。这意味着,即使你选择了不同的分类,文章的分类仍然会保持不变,直到重新发布或更新文章。

这种方法适用于大多数情况,但它也有其局限性——如果你需要在特定条件下强制一篇文章归类到某个分类,可能还需要更复杂的逻辑处理。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

教学目标

本教程旨在教授您如何使用WordPress的主题和插件来实现文章只能归属于特定分类的功能。

课程概述

  • 课程介绍:解释为什么在WordPress中使用分类可以提高网站的专业性和用户体验。
  • 引入主题与插件:简要介绍如何通过WordPress的主题和插件来定制网站功能。
  • 主题自定义:展示如何修改WordPress默认布局以适应您的需求。
  • 插件使用:详细介绍如何使用WordPress插件来添加新功能或优化现有功能。
  • 分类管理:说明如何在WordPress中创建、编辑和删除分类。
  • 设置分类与文章关系:讨论如何使用分类与文章的关系来确保文章只能归属到指定的类别。
  • 验证功能:提供一个简单的测试脚本来检查文章是否被正确地归类。
  • 总结:强调使用这些技巧的重要性以及可能遇到的问题。

实践操作

1. 创建分类并设置其权限

首先,登录到WordPress后,进入“管理菜单”,然后选择“编辑器” > “主题”。在左侧导航栏中,找到并点击“分类”。

2. 创建新的分类

输入一个新的分类名称,例如“技术”(Tech),然后选择合适的分类级别(如“一级”、“二级”等)。

3. 设置分类权限

接下来,在新创建的分类页面上,点击“属性”按钮,然后勾选“启用”选项,将“访问限制”设置为“仅对管理员开放”。

4. 更新文章标签

现在,每个文章应该有一个默认的分类。为了确保只有该分类中的文章才能被归档,您可以手动更新文章的标签:

function update_category_tags($taglist) {
    $tags = array();
    foreach ($taglist as $tag) {
        if (strpos($tag, 'category') !== false) {
            $tags[] = trim(str_replace('category-', '', $tag));
        }
    }

    return $tags;
}
add_filter('pre_get_posts', 'update_category_tags');

5. 检查分类与文章关系

在WordPress的后台中,转到“管理菜单”下的“编辑器”,找到并点击“分类”。在分类列表页中,您可以看到已有的分类及其对应的文章数量。

6. 使用分类过滤器

如果您想进一步控制文章分类,请使用register_post_type()函数来注册新的分类类型,并使用相应的过滤器来调整文章的分类显示。

// 注册新分类
function register_my_custom_category() {
    register_post_type(
        'my_custom_category',
        array(
            'labels' => array(
                'name' => __('My Custom Category'),
                'singular_name' => __('My Custom Category'),
            ),
            'supports' => array('title', 'editor', 'thumbnail'),
            'public' => true,
            'show_in_rest' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'my-custom-category'),
        )
    );
}

// 使用分类过滤器
add_action('init', 'register_my_custom_category');

// 在某个文章中查看分类信息
if (is_single()) {
    $categories = get_the_category();

    // 输出分类信息
    echo '<div class="category-info">';
    echo '<h2>' . esc_html(get_cat_title(0)) . '</h2>';
    echo '</div>';
}

结论

通过以上步骤,您已经成功实现了在WordPress中强制每篇文章只能归属于一个指定分类的功能。这个方法不仅提高了网站的专业性,也为用户提供了一个更直观的分类结构,使得他们更容易找到相关的内容。希望这篇教程能帮助您更好地利用WordPress提供的强大功能!