为 woocommerce 产品选项卡上的自定义字段设置优先级
Posted
技术标签:
【中文标题】为 woocommerce 产品选项卡上的自定义字段设置优先级【英文标题】:Set priority for custom fields on woocommerce product tabs 【发布时间】:2021-12-12 18:18:54 【问题描述】:当产品很简单时,我想在常规数据选项卡中添加两个自定义字段。 但是,我希望这些自定义字段出现在列表顶部。
我尝试在钩子中设置优先级,但这不起作用。
所以我有以下内容:
function add_options_simple()
global $woocommerce, $post;
$id = $post->ID;
$product = wc_get_product($id)->get_type();
if ($product == 'simple')
woocommerce_wp_text_input(
array(
'id' => '_brand',
'label' => 'Brand',
'type' => 'text',
)
);
woocommerce_wp_text_input(
array(
'id' => '_EAN',
'label' => 'EAN:',
'type' => 'text',
)
);
add_action( 'woocommerce_product_options_general_product_data', 'add_options_simple',1,3 );
但没有成功。 有什么建议吗?
【问题讨论】:
这个钩子是在 woo 默认字段之后加载的,所以我不这么认为,除非你对其进行硬编码。另一种选择是创建自定义选项卡,您可以在其中设置优先级,并且您的选项卡将首先显示您的字段。 无法在最顶部显示,因为 WooCommerce 中没有提供此功能(除非您要编辑强烈建议不要编辑的核心文件或使用“肮脏的解决方案”)。要应用此 WooCommerce 方式:您可以在销售价格字段之后显示自定义字段,第一种可能是在简单产品的产品常规选项卡上的现有字段之间/之后添加一个字段。 【参考方案1】:无法将这些字段添加到顶部。如您所见here
但是您可以尝试使用 jQuery。试试下面的代码。
function add_options_simple()
global $woocommerce, $post;
$id = $post->ID;
$product = wc_get_product($id)->get_type();
if ($product == 'simple') ?>
<div class="options_group brand_ean show_if_simple hidden">
<?php
woocommerce_wp_text_input(
array(
'id' => '_brand',
'label' => 'Brand',
'type' => 'text',
)
);
woocommerce_wp_text_input(
array(
'id' => '_EAN',
'label' => 'EAN:',
'type' => 'text',
)
);
?>
</div>
<script type="text/javascript">
var brand_ean = jQuery('.brand_ean')[0].outerhtml;
jQuery('.brand_ean').remove();
jQuery( brand_ean ).insertBefore('.options_group.pricing');
</script>
<?php
add_action( 'woocommerce_product_options_general_product_data', 'add_options_simple', 1, 3 );
经过测试且有效
【讨论】:
这是正确的,但这不是我想要解决的方式。但是,您指向核心文件的链接非常清楚:首先生成框,然后遵循 add_action。所以这显然是不可能的。谢谢 我知道这不是你想要的,但我只能通过这种方式找到它。以上是关于为 woocommerce 产品选项卡上的自定义字段设置优先级的主要内容,如果未能解决你的问题,请参考以下文章
WooCommerce 中特定产品的基于地理位置的自定义重定向