要在WordPress分类存档页中添加一个子分类选择列表,您需要使用自定义模板文件和一些PHP代码来实现这个功能。以下是一种方法,步骤如下:

  1. 创建一个自定义模板文件:首先,在您的主题文件夹中创建一个新的模板文件。您可以将此文件命名为customcategoryarchive.php

    WordPress分类存档页添加子分类选择列表

    ,以明确表示它是用于自定义分类存档的。

  2. 编辑自定义模板文件:在自定义模板文件中添加以下代码,以获取父分类的名称和子分类的下拉选择列表:

<?php
/
Template Name: Custom Category Archive
/
get_header();

$parent_categories = get_terms(array(
    'taxonomy' => 'category',
    'parent' => 0,
));

if (isset($_GET['subcategory'])) {
    $selected_subcategory = sanitize_text_field($_GET['subcategory']);
} else {
    $selected_subcategory = '';
}
?>

<div class="categoryselector">
    <form method="get" action="">
        <label for="subcategory">选择子分类:</label>
        <select name="subcategory" id="subcategory">
            <option value="">所有子分类</option>
            <?php foreach ($parent_categories as $parent_category) : ?>
                <?php
                $subcategories = get_terms(array(
                    'taxonomy' => 'category',
                    'parent' => $parent_category>term_id,
                ));
                ?>
                <optgroup label="<?php echo $parent_category>name; ?>">
                    <?php foreach ($subcategories as $subcategory) : ?>
                        <option value="<?php echo $subcategory>slug; ?>" <?php selected($selected_subcategory, $subcategory>slug); ?>><?php echo $subcategory>name; ?></option>
                    <?php endforeach; ?>
                </optgroup>
            <?php endforeach; ?>
        </select>
        <input type="submit" value="筛选">
    </form>
</div>

<?php
if (!empty($selected_subcategory)) {
    $query_args = array(
        'category_name' => $selected_subcategory,
        'post_type' => 'post',
        'posts_per_page' => 10, // 您可以根据需要更改每页显示的帖子数量
    );
} else {
    $query_args = array(
        'post_type' => 'post',
        'posts_per_page' => 10, // 您可以根据需要更改每页显示的帖子数量
    );
}

$custom_query = new WP_Query($query_args);

if ($custom_query>have_posts()) :
    while ($custom_query>have_posts()) : $custom_query>the_post();
        // 在这里显示您的帖子内容
        the_title('<h2>', '</h2>');
        the_content();
    endwhile;
else :
    echo '没有找到帖子。';
endif;
?>

<?php get_footer(); ?>

在上述代码中,我们首先获取了所有父分类,然后创建了一个下拉选择列表,其中包含子分类的选项。当用户选择子分类并提交表单时,我们将根据用户选择的子分类过滤帖子。

  1. 创建一个页面并选择自定义模板:现在,您可以在WordPress后台创建一个新页面,然后在页面编辑器中选择您刚刚创建的自定义模板“Custom Category Archive”。

  2. 发布页面:发布页面后,您可以访问该页面并使用子分类选择列表来过滤显示的帖子。

请注意,上述示例中使用了默认的文章类型“post”和分类“category”。如果您在自己的WordPress网站中使用了自定义文章类型或不同的分类法,您需要相应地修改代码中的分类和文章类型名称。

希望这能帮助您在WordPress分类存档页中添加子分类选择列表!