更改产品页面上的“选择一个选项”文本

问题描述 投票:0回答:6

在我的 woo 商务网站的产品页面上。我想将下拉菜单“选择一个选项”中的文本更改为另一种语言。有没有办法做到这一点。

woocommerce
6个回答
5
投票

AGMG 的答案不再正确。要更改下拉菜单的默认选项,您现在可以连接到

woocommerce_dropdown_variation_attribute_options_args

例如

add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'my_wc_filter_dropdown_args', 10 );
function my_wc_filter_dropdown_args( $args ) {
    $args['show_option_none'] = 'Select an option';
    return $args;
}

我的用例是将其更改为变体组名称(例如“尺寸”或“颜色”)。

function my_wc_filter_dropdown_args( $args ) {
    $variation_tax = get_taxonomy( $args['attribute'] );
    $args['show_option_none'] = apply_filters( 'the_title', $variation_tax->labels->name );
    return $args;
}

2
投票

我不太明白“下拉菜单中的文本‘选择一个选项’变成另一种语言”。但是,如果您只需将文本更改为“选择”之类的内容或使用相关变体标签作为默认选择选项,则可以通过覆盖 Woocommerce 默认

variable.php
文件来实现。

  1. 如果您没有子主题,请创建一个子主题(始终推荐)并激活它
  2. 从 /wp-content/plugins/woocommerce/templates/single-product/add-to-cart 下载
    variable.php
  3. 打开
    variable.php
    并搜索
    <option value=""><?php echo __( 'Choose an option', 'woocommerce' ) ?>&hellip;</option>
  4. Choose an option
    替换为您需要的任何文本并保存文件
  5. 在您的子主题下创建一个名为“woocommerce”的新目录
  6. 在其中创建单个产品 --> add-to-cart 子目录并上传之前编辑的
    variable.php
    文件。

如果需要删除标签并将其添加为默认选项值,请替换;

    <td class="label"><label for="<?php echo sanitize_title($name); ?>"><?php echo wc_attribute_label( $name ); ?></label></td>
    <td class="value"><select id="<?php echo esc_attr( sanitize_title( $name ) ); ?>" name="attribute_<?php echo sanitize_title( $name ); ?>">
    <option value=""><?php echo __( 'Choose an option', 'woocommerce' ) ?>&hellip;</option>

与;

    <td class="label"><label for="<?php echo sanitize_title($name); ?>"></label></td>
    <td class="value"><select id="<?php echo esc_attr( sanitize_title( $name ) ); ?>" name="attribute_<?php echo sanitize_title( $name ); ?>">
    <option value=""><?php echo wc_attribute_label( $name ); ?></option>

就是这样!


0
投票

另一种方法是使用 html 挂钩:woocommerce_dropdown_variation_attribute_options_html

首先在functions.php中挂钩这个过滤器并添加var_dump(),这样你就知道现有的html是什么,如下所示:

function filter_woocommerce_dropdown_variation_attribute_options_html( $html, $args ) { 

  var_dump($html);

  return $html; 
}; 


add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_woocommerce_dropdown_variation_attribute_options_html', 10, 2 );

之后,只需将 html 替换为您真正想要的内容即可:

function filter_woocommerce_dropdown_variation_attribute_options_html( $html, $args ) 
  { 
    $html = "//my replacement html with text in foreign language";
    return $html; 
}; 

add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_woocommerce_dropdown_variation_attribute_options_html', 10, 2 );

这应该可以解决问题。


0
投票

@sobeit 答案可能不适合您。这是因为并非所有属性都存储为分类法。但您实际上并不需要获取该属性,因为在

args
数组中您已经有了标签。

这是更新后的代码

add_filter( 'woocommerce_dropdown_variation_attribute_options_args','my_wc_filter_dropdown_args') );

function wc_filter_dropdown_args( $args ) {
        global $product;
        $args['show_option_none'] = __( 'Choose', 'your-theme-name' ) . ' ' . strtolower(wc_attribute_label($args['attribute'],$product));

        return $args;
    }

附注我本想将此作为评论发布,但我没有足够的声誉来这样做。


0
投票
    // Меняем текст "выбрать опцию" на странице вариативного товара, на название атрибута
add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'my_wc_filter_dropdown_args', 10 );
function my_wc_filter_dropdown_args( $args ) {
    $variation_tax = get_taxonomy( $args['attribute'] );
    $args['show_option_none'] = str_replace('Товар ',  '', apply_filters( 'the_title', $variation_tax->labels->name )); // Вырезаем слово "Товар " из названия атрибута
    return $args;
}

0
投票

我已经使用上面的代码片段很多年了,但现在在 Wordpress error_log 中出现错误,但是代码仍然可以使用属性标签替换 Choose 和 Option。 使用的代码: add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'my_wc_filter_dropdown_args', 10 ); 函数 my_wc_filter_dropdown_args( $args ) { $variation_tax = get_taxonomy( $args['attribute'] ); $args['show_option_none'] = apply_filters( 'the_title', $variation_tax->labels->name ); 返回$args; }

产生的错误: [2024 年 9 月 30 日 11:43:37 UTC] PHP 警告:尝试读取 /home/websitenameco/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php 中 bool 上的属性“标签” (582):第 5 行 eval() 代码 [2024 年 9 月 30 日 11:43:37 UTC] PHP 警告:尝试读取 /home/websitenameco/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php 中 null 的属性“name” (582):第 5 行 eval() 代码 第 5 行是: $args['show_option_none'] = apply_filters( 'the_title', $variation_tax->labels->name ); 我不知道为什么会出现这个错误,也不知道如何修复它,请任何人帮忙。

© www.soinside.com 2019 - 2024. All rights reserved.