#php #wordpress #woocommerce
#php #wordpress #woocommerce
Вопрос:
Я создаю заголовки продуктов для XML-ленты продуктов. Мне нужно получить значение изменения по идентификатору. В документации говорится:
$text = apply_filters( 'xml_feeds_productname_variant', $text, $product_item->ID, $vars->ID );
Итак, я получил идентификатор вариации и отобразил его:
function custom_product_name( $text, $product_id, $vars_id ) {
global $product;
$product_name = $product->get_name();
$sku = $product->get_sku();
$text = 'Example.com ' . $sku . ' ' . $product_name . ' ' . $vars_id;
return $text;
}
add_filter( 'xml_feeds_productname_variant', 'custom_product_name', 10, 3 );
Теперь мне нужно отобразить значение изменения вместо $vars_id
переменной. Если продукт выбрал вариант со значением 60x40cm, отобразите «60x40cm» в заголовке вместо $vars_id
.
Ответ №1:
- Как это часто бывает, существуют разные способы, это один из них.
- Обратите внимание, что использование глобальной переменной необязательно, поскольку у вас есть доступ к
$product_id
объекту продукта, который вы можете получить черезwc_get_product
function custom_product_name( $text, $product_id, $vars_id ) {
// Get WC_Product_Variation Object
$variation = wc_get_product( $vars_id );
// Is a WC_Product
if ( is_a( $variation, 'WC_Product' ) ) {
// Variation name
$variation_name = implode( ' / ', $variation->get_variation_attributes() );
// Output
$text = 'Name: ' . $variation_name;
}
return $text;
}
add_filter( 'prefix_xml_feeds_productname_variant', 'custom_product_name', 10, 3 );