我正在尝试美化我的产品名称,并且需要将更改应用到所有地方(目录,购物车,结帐,小部件...)等
实际上,我设法:
目录(循环)单个产品:
add_filter('the_title', 'new_title', 10, 2);
function new_title($title, $id) {
if('product' == get_post_type($id)){
$title = rename_woo_product($title, $id); // My function to rename
}
return $title;
}
在产品标题标签和酵母中:
add_filter( 'pre_get_document_title', 'generate_custom_title', 10 );
add_filter('wpseo_title', 'generate_custom_title', 15);
function generate_custom_title($title) {
if( is_singular( 'product') ) {
$title = get_the_title();
}
return $title;
}
购物车和结帐:
add_filter( 'woocommerce_cart_item_name', 'custom_variation_item_name', 10, 3 );
function custom_variation_item_name( $item_name, $cart_item, $cart_item_key ){
$product_item = $cart_item['data'];
$item_name = get_the_title( $cart_item['product_id'] );
if(!empty($product_item) && $product_item->is_type( 'variation' ) ) {
$item_name = $item_name . '<br>' . $cart_item['data']->attribute_summary;
}
if(is_cart()){
$item_name = sprintf( '<a href="%s">%s</a>', esc_url( $cart_item['data']->get_permalink() ), $item_name );
}
return $item_name;
}
我不知道这是否是最好的方法,但是它可以做到这一点。但是例如,我使用woocommerce的“最近查看的产品”小部件,并且产品标题未更新。
有没有更好的方法来更新产品名称并将其应用于任何地方?
您也可以使用复合钩子,woocommerce_product_get_name
例如:
add_filter('woocommerce_product_get_name', 'filter_wc_product_get_name', 10, 2); // For "product" post type
add_filter('woocommerce_product_variation_get_name', 'filter_wc_product_get_name', 10, 2); // For "product_variation" post type
function filter_wc_product_get_name( $name, $product ){
if ( ! is_admin() ) {
$name = rename_woo_product($name, $product->get_id());
}
return $name;
}
它应该替换您的自定义函数,该函数挂在woocommerce_cart_item_name
过滤器挂钩上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句