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

下拉选择器中的WooCommerce品牌分类术语列表

呼延德华
2023-03-14

我不希望使用任何插件来完成这项任务,因为我最近与一个破坏网站的类似项目发生冲突。因此,我希望从基础创建此功能。

我需要在产品类别页面上的下拉列表,以按品牌选择产品。下拉列表将显示所有品牌。当您选择一个时,网站只显示分配给该品牌的产品。我们不需要使用内置的下拉列表,允许按新鲜度、价格、流行度等查看。

使用WooCommerce“Brands分类法,我建立了自己的品牌,并为每个产品分配了一个品牌。

我可以使用以下代码查看所有品牌及其属性的数组:

$brands = get_terms('brand');
print_r($brands);

其输出如下:

排列(

[0]=

[1]=

[2] =

[3]=

[5] =

[6]=

[7] =

[8]=

如何构建下拉(选择)列表来创建它?我想它会有这样的框架,我已经开始:

<?php
$brands = get_terms('brand');
//print_r($brands);
?>

<select name="orderby" class="orderby">
    <?php foreach ( $brands as ??? ) : ?>
        <option value="<?php echo esc_attr( $??? ); ?>" <?php selected( $orderby, $??? ); ?>><?php echo esc_html( $??? ); ?></option>
    <?php endforeach; ?>
</select>

共有2个答案

曹浩波
2023-03-14

在新版本的WooCommerce中,术语的前缀是pa_,因此品牌已被pa_品牌取代

最新版本的工作代码是

<?php $brands = get_terms('pa_brand', ['orderby' => 'name']); ?> 
<select name="orderby" class="orderby">
    <?php
    if (!empty($brands) && !is_wp_error($brands)):
        foreach ($brands as $brand) :
            ?>
            <option value="<?= $brand->term_id; ?>">
                <?= $brand->name; ?>
            </option>
            <?php
        endforeach;
    endif;
    ?>
</select>

参考:https://developer.wordpress.org/reference/functions/get_terms/

严朝明
2023-03-14

正如您所见,它是一个术语对象数组(WP_term Object),您必须在循环中使用该术语的每个属性的对象语法,如下所示:

<?php

    $brands = get_terms( 'brand', array(
        'orderby'  => 'name'  // orderby arguments ('name', 'slug','term_group', 'term_id', 'id', 'description')
    ) );
    //print_r($brands);

?>
<select name="orderby" class="orderby">
    <?php
        foreach ( $brands as $key => $brand ) :
            $brand_id = $brand->term_id;
            $brand_name = $brand->name;
            $brand_slug = $brand->slug;
            $brand_term_group = $brand->term_group;
            $brand_term_taxonomy = $brand->term_taxonomy_id;
            $brand_taxonomy = $brand->taxonomy;
            $brand_description = $brand->description;
            $brand_parent = $brand->parent;
            $brand_count = $brand->count;
            $brand_filter = $brand->filter;

            $number = $key+1;
            $option = 'option-' . $number;
    ?>
        <option value="<?php echo $option; ?>"><?php echo $brand->name; ?></option>
    <?php endforeach; ?>
</select>

此代码经过测试并正常工作

 类似资料:
  • 我正在尝试从下拉列表中选择一个选项,该选项在单击定位器之前不会填充。这是我在Firebug中看到的: 到目前为止,我拥有的代码是: 我得到一个意外的TagNameException:元素应该是“选择”,但是“div”。我不知道如何处理这个,因为我以前只使用过选择。 假设我想为代理代码选择“523-23-20275”。我该怎么做? 感谢您的帮助!谢谢

  • 我已经通读了所有其他文章,我没有找到我的答案。 我从一个带有对象选项的JOptionPane开始。当用户选择动物或栖息地时,会出现另一个带有选项的下拉列表。现在我正在努力让另一个信息弹出窗口在狮子被选中时打开。但我不能让它工作。 我还查看了其他人的输入,以便能够显示这些下拉列表。但他们使用的是JFrame,因此在NetBeans之外会打开另一个java窗口。 我现在要做的是为下拉列表中的选项输入i

  • 我是硒的新手,我试图从下拉列表中选择一个选项。下拉列表的超文本标记语言如下: WebElement的是: 我已经尝试了几乎所有的方法,我可以在互联网上找到,但没有任何效果。我试图使用类,包装了,但它抛出了一个异常。 我试图丢失列表中的所有选项,但在这种情况下得到了异常应该有标签,但它有。我需要使用作为findelements的标识符。 请帮我解决这个问题。

  • 问题内容: 我创建了一个客户c#DropDownList控件,可以将其内容呈现为optgroup(不是从头开始,我编辑了一些在Internet上找到的代码,尽管我确切地了解了它的作用),并且工作正常。 但是,我现在遇到一种情况,我需要在下拉菜单中有两个缩进级别,即 但是,在上面的示例代码段中,它呈现的缩进量与相同。 有没有一种方法可以产生我想要的嵌套optgroup行为? 问题答案: 好的,如果有

  • 我正在努力尝试从以下下拉菜单中选择一个名为“某些产品”的产品。'id="s2id_autogen81"'是新的ID元素,我使用该ID来抓取项目,但它被更改为这个自动生成值,我不确定要使用量角器抓取什么。 从下拉菜单中选择它 从选择后的下拉列表中

  • 我无法从selenium webdriver中的下拉列表中选择值。我尝试了所有使用名称和xpath选择器的方法。请帮忙。 代码是: