在WooCommerce Composite Products插件中,下面是add_filters数组:
/**
* Filter front-end params.
*
* @param array $params
*/
$params = apply_filters( 'woocommerce_composite_front_end_params', array(
'small_width_threshold' => 450,
'full_width_threshold' => 450,
'legacy_width_threshold' => 450,
'i18n_qty_string' => _x( ' × %s', 'qty string', 'woocommerce-composite-products' ),
'i18n_price_string' => _x( ' – %s', 'price suffix', 'woocommerce-composite-products' ),
'i18n_title_string' => sprintf( _x( '%1$s%2$s%3$s', 'title quantity price', 'woocommerce-composite-products' ), '%t', '%q', '%p' ),
'i18n_selected_product_string' => sprintf( _x( '%1$s%2$s', 'product title followed by details', 'woocommerce-composite-products' ), '%t', '%m' ),
'i18n_free' => __( 'Free!', 'woocommerce' ),
'i18n_total' => __( 'Total', 'woocommerce-composite-products' ) . ': ',
'i18n_no_options' => __( 'No options available…', 'woocommerce-composite-products' ),
'i18n_no_selection' => __( 'No selection', 'woocommerce-composite-products' ),
'i18n_no_option' => _x( 'No %s', 'dropdown empty-value option: optional selection (%s replaced by component title)','woocommerce-composite-products' ),
等,等等...
我要做的是在两个函数(在本例中为remove_filter
和i18n_clear_selection
)上使用i18n_strikeout_price_string
,并更改{{1}的第一个变量}。
我尝试做i18n_no_option
,但没有执行任何操作,并尝试使用下面的代码段(来自this StackOverflow page):
remove_filter( 'woocommerce_composite_front_end_params', 'i18n_strikeout_price_string' );
但这只是返回了白页-没有错误或其他任何内容。有没有办法隔离数组中的函数并删除/更改那些函数?
答案 0 :(得分:0)
请注意,'$ arr'变量将使用传递给'change_composite_product_functions'函数的数据填充。
您的代码部分实际上是用新数组覆盖它。
您要查找阵列键/项目并进行更改/删除。下面是未经测试的简短摘要:
function change_composite_product_functions($arr) {
if (array_key_exists('i18n_stirkeout_price_string', $arr)) unset($arr['i18n_stirkeout_price_string']); // Remove
if (array_key_exists('i18n_no_option', $arr)) $arr['i18n_no_option'] = 'Blah blah this is a test'; // Change
return $arr;
}
add_filter( 'woocommerce_composite_front_end_params', 'change_composite_product_functions', 10, 1 );