我正在使用Woocommerce,并且集成了一些自定义字段,以允许用户指定新值,这些新值稍后将附加到产品标题上。
我正在使用update_post_meta
/ get_post_meta
保存新信息。这部分工作正常。
然后,我使用过滤器woocommerce_product_title
来更新标题。在使用$product->get_title()
的情况下,此过滤器可以正常工作,但在使用$product->get_name()
时则无济于事,因为在某些地方,我不想附加新信息。>
我还在产品页面上使用了过滤器the_title
。
基本上,我的代码如下所示,其中return_custom()
是函数,而不是根据产品ID构建新信息。
function update_title($title, $id = null ) {
$prod=get_post($id);
if (empty($prod->ID) || strcmp($prod->post_type,'product')!=0 ) {
return $title;
}
return $title.return_custom($id);
}
function update_product_title($title, $product) {
$id = $product->get_id();
return $title.return_custom($id);
}
add_filter( 'woocommerce_product_title', 'update_product_title', 9999, 2);
add_filter( 'the_title', 'update_title', 10, 2 );
将产品添加到购物车时出现问题。使用的名称是默认名称,因此我下面的代码不足以更新购物车中使用的产品名称。通知邮件也是如此。我认为这是合乎逻辑的,因为电子邮件将使用购物车的信息。
我非常确定add_to_cart()
内部正在发生所有事情,但是我找不到与产品名称相关的任何过滤器/挂钩。
如何确保购物车中使用的名称正确?为了将新信息附加到购物车中的产品标题上,我除了正在使用的过滤器/挂钩外还应该考虑什么?
我想确保在所有购物过程中都能看到新标题。从产品页面直到通知邮件。
答案 0 :(得分:1)
以下内容使您可以通过一个钩子功能自定义购物车,结帐,订单和电子邮件通知中的产品名称:
validateCisco()
{
input="$1"
echo -n "" > output.txt
echo "$input" | while IFS= read -r cmd; do
valid=false
cat cmds_cisco.txt | while IFS= read -r valid_cmd; do
echo $cmd | grep -q -P "$valid_cmd"
if [ $? = 0 ]; then
valid=true
echo $valid
break
fi
done
# output as txt
echo "$valid"
if [ "$valid" = false ]; then echo '!!'"$cmd" >> output.txt; echo Invalid command '"'"$cmd"'"'; else echo "$cmd" >> output.txt; fi
done
}
echo "ip address \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" > cmds_cisco.txt
validateCisco "ip address 1.2.3.4 255.255.255.0"
代码在您的活动子主题(或活动主题)的function.php文件上。经过测试,可以正常工作。
答案 1 :(得分:0)
尝试使用woocommerce_cart_item_name
过滤器。
[woocommerce_cart]
短代码使用cart/cart.php
模板,显示标题的代码是这样:
if ( ! $product_permalink ) {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ) . ' ' );
} else {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) );
}