当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce子类别页面上显示子类别下拉列表[关闭]

祝宾白
2023-03-14

我正在使用WooCommerce子类别归档页面上的显示子类别术语列表回答我上一个问题的代码,在我的WooCommerce商店的父类别页面上显示我的子类别

现在我希望它显示为一个下拉列表(理想情况下是一个select2下拉列表,就像其他WooCommerce下拉列表一样),而不是普通的链接。

我知道我可以使用wc\u product\u dropdown\u categories(),但如何在主父子类别页面上显示子类别作为下拉列表?

共有1个答案

卫学真
2023-03-14

以下是一个自定义快捷码,将显示链接子类别术语列表的Select2下拉列表。

注意:默认情况下,WooCommerce归档页面上不会加载Select2库(和样式)。因此,使用CDN的外部链接在这个短代码中包含了一些内容,并且只加载到子类别中。

如果您愿意,您可以使用WooCommerce中包含的文件替换它,使用WordPress排队推荐的方式。

守则:

add_shortcode('wc_subcat_dropdown', 'wc_sub_subcategories_dropdown');
function wc_sub_subcategories_dropdown( $atts ) {
    // Shortcode attribute (or argument)
    extract( shortcode_atts( array(
        'taxonomy' => 'product_cat',
        'obj_id'   => '0',
    ), $atts, 'wc_subcat_dropdown' ) );

    if ( $obj_id > 0 ) :
        $obj = new WP_Term( (int) $obj_id );
    else :
        $obj = get_queried_object();
    endif;

    if ( is_a($obj, 'WP_Term') && $taxonomy === $obj->taxonomy && 0 != $obj->parent ) :
        // Get sub-subcategories of the current subcategory
        $terms = get_terms([
            'taxonomy'    => $taxonomy,
            'hide_empty'  => true,
            'parent'      => $obj->term_id
        ]);
    endif;

    if ( isset($terms) && ! empty($terms) ) :

    ob_start(); // Start buffering

    // Select2 CSS - Can be removed and replaced
    echo '<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" />';

    echo '<select name="product_cat" id="'.$taxonomy.'" class="dropdown_'.$taxonomy.'">
        <option value="">'.__("Select a subcategory","woocommerce").'</option>';

    // Loop through product subcategories WP_Term Objects
    foreach ( $terms as $term ) {
        echo '<option value="'. $term->slug .'">'. $term->name .'</option>';
    }
    echo '</select>';

    // Select2 Script - Can be removed and replaced
    echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>';
    ?>
    <script type='text/javascript'>
    (function($) {
        $('select#<?php echo $taxonomy; ?>').select2();
        $('.dropdown_product_cat').change(function(){
            if( $(this).val() !=='' ) {
                location.href = '<?php echo home_url(); ?>/?product_cat='+$(this).val();
            }
        });
    })(jQuery);
    </script>
    <?php
    return ob_get_clean();
    endif;
}

代码进入函数。活动子主题(或活动主题)的php文件。测试和工作。

>

[wc_subcat_dropdown]

在PHP代码中,像一个模板文件,任何钩住的函数...

echo do_shortcode('[wc_subcat_dropdown]');

<?php echo do_shortcode('[wc_subcat_dropdown]'); ?>

使用挂钩函数并在子类别标题下显示下拉列表:

add_action( "woocommerce_archive_description", "custom_sub_category_dropdown", 5 );
function custom_sub_category_dropdown(){
    echo do_shortcode('[wc_subcat_dropdown]');
}

代码进入函数。活动子主题(或活动主题)的php文件。测试和工作。

可选的短代码参数:

  • $id-定义子类别术语Id(默认为当前子类别术语Id)
  • 默认情况下,WooCommerce产品类别分类法。

相关的:

  • 在WooCommerce子类别存档页面上显示子类别术语列表
  • WooCommerce自定义短代码产品类别下拉列表
 类似资料:
  • 在Woocommerce中,我使用“在Woocommerce存档应答功能中获取当前产品类别的子类别”在父类别页面上显示子类别列表 但我只需要将其应用于特定的产品类别,而使用带有大量类别ID的数组似乎并不理想。 我只需要显示第一个子类别的列表,例如,我的主要父类别之一是“衣服”,然后是子类别“衬衫”,然后是子类别“无袖”。我只需要在第一个子类别上显示它,在本例中为“衬衫”。

  • 我需要一些关于Woocommerce类别显示选项的帮助。在Wordpress仪表板中,我按照以下链接全局设置类别显示选项<外观- 有三种显示选项可用。 展示产品 目前,选择了第三个选项,它显示子类别以及父类别和子类别下的所有产品。但是,我想排除子类别下的所有产品。换句话说,我只想在父类别下显示子类别和产品。 我在几个教程网站上找到了以下片段。代码完全按照我想要的方式工作,但它也禁用了管理产品搜索和

  • 我发现了一个WooCommerce代码片段,它在分类页面上添加了排序功能,并且可以正常工作。 但问题是排序子类别仅显示在父类别页面上,而不显示在子类别页面中。 为了实现这一点,我需要在代码中修改什么? 这是我的密码: 参考:在单独的列表中显示商业类别、子类别和产品

  • 我是初学者(PHP) 我显示这个日期在PHP嵌套'ul'喜欢(代码)- 一切都很好,没有问题。。。。我的问题,如果点击主分类得到我在这个类别中还没有主题。。。。我需要代码来选择用户是否在主类别中选择了主类别回显子类别——如果选择了子类别,则只显示子类别中的数据,或者用户是否在主类别示例中选择了主类别回显主题::我有类别Photosession和子类别- > 通知- 这是我选择帖子的代码 我认为我的

  • 问题内容: 我想在选择 列表(下拉列表)中显示类别,子类别和子子类别,就像WordPress在其管理面板中显示的方式一样。 首先看一下我的数据库表(tb_categories)- 数据库表 我想要以下HTML格式的输出- 输出 两项“无”和“未分类”在代码中进行了硬编码。我 想知道如何 使用选择列表选项以层次结构顺序显示类别及其子类别。 我正在尝试使用自我连接的以下sql查询。这 是- And t

  • 我正在尝试获取子类别的子类别的产品类别 这段代码按层次列出了它们下面的所有顶级类别和子类别,但我有子类别(sub-sub-category)的子类别,因此如何列出这些子类别(使用clic)。 BO中的类别 在FO中列出类别