在我的 woo 商务网站的产品页面上。我想将下拉菜单“选择一个选项”中的文本更改为另一种语言。有没有办法做到这一点。
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;
}
我不太明白“下拉菜单中的文本‘选择一个选项’变成另一种语言”。但是,如果您只需将文本更改为“选择”之类的内容或使用相关变体标签作为默认选择选项,则可以通过覆盖 Woocommerce 默认
variable.php
文件来实现。
variable.php
variable.php
并搜索<option value=""><?php echo __( 'Choose an option', 'woocommerce' ) ?>…</option>
Choose an option
替换为您需要的任何文本并保存文件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' ) ?>…</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>
就是这样!
另一种方法是使用 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 );
这应该可以解决问题。
@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;
}
附注我本想将此作为评论发布,但我没有足够的声誉来这样做。
// Меняем текст "выбрать опцию" на странице вариативного товара, на название атрибута
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;
}
我已经使用上面的代码片段很多年了,但现在在 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 ); 我不知道为什么会出现这个错误,也不知道如何修复它,请任何人帮忙。