Я должен проверить, добавлен ли продукт в корзину и куплен находится в порядке. I.E Когда пользователь приобретает переменное продукт вместе с другими продуктами переменной, я хочу проверить, добавлен ли конкретный вариабельный продукт и приобретен. Так что я могу динамически отображать некоторую информацию на странице Commandyou и электронную почту, отправленную как администратору, так и к клиенту.
Я пытался использовать "Проверка того, что конкретное значение атрибута используется в корзине (вариация продукта)" код ответа, Но это не работает на странице Charkyou Продукт приобретен .
То, что я пытаюсь отображать динамический контент, если продукты в порядке имеют значение атрибута «пользовательские», а также отображать дополнительную строку таблицы к таблице заказа, если есть продукт в порядке, имеющем значение атрибута «Заказать «С следующим кодом:
function add_custom_row_to_order_table( $total_rows, $myorder_obj ) {
if ( is_attr_in_cart('custom') ) {
$cmeasuement = __( 'Yes', 'domain' );
}else{
$cmeasuement = __( 'No', 'domain' );
}
$total_rows['el_custom'] = array(
'label' => __('Custom Required?', 'domain'),
'value' => $cmeasuement,
);
return $total_rows;
}
add_filter( 'woocommerce_get_order_item_totals', 'add_custom_row_to_order_table', 10, 2 );
Но я продолжаю получать «нет» (см. Скриншот ниже) и причина в том, что функция {{{}} не обнаруживает, если атрибут находится в порядке. Помогите в правильном направлении, чтобы получить его обнаружение, если заказ имеет продукт с конкретным значением атрибута.
Любая помощь приветствуется.
1 ответ
Чтобы сделать его работать с WooCommerce $attribute_value
- <$attribute_value
- значение
function is_attr_in_order( $order, $attribute_value ){
$found = false; // Initializing
// Loop though order items
foreach ( $order->get_items() as $item ){
// Only for product variations
if( $item->get_variation_id() > 0 ){
$product = $item->get_product(); // The WC_Product Object
$product_id = $item->get_product_id(); // Product ID
// Loop through product attributes set in the variation
foreach( $product->get_attributes() as $taxonomy => $term_slug ){
// comparing attribute parameter value with current attribute value
if ( $attribute_value === $term_slug ) {
$found = true;
break;
}
}
}
if($found) break;
}
return $found;
}
Теперь эта условная функция будет работать в вашем коде на законодательстве.
add_filter( 'woocommerce_get_order_item_totals', 'add_custom_row_to_order_table', 10, 3 );
function add_custom_row_to_order_table( $total_rows, $order, $tax_display ) {
$domain = 'woocommerce'; // The text domain (for translations)
$term_slug = 'custom'; // <== The targeted product attribute slug value
$total_rows['custom'] = array(
'label' => __( "Custom Required?", $domain ),
'value' => is_attr_in_order( $order, $term_slug ) ? __( "Yes", $domain ) : __( "No", $domain ),
);
return $total_rows;
}
Код помещается в файл functions.php вашей активной дочерней темы (или активной темы) . Проверено и работает.
Если вам нужно только целевую страницу заказа, которую вы будете использовать внутри вашей подключенной функции. Это условие:
if( is_wc_endpoint_url('order-received') ) {
// The code comes here
}
return $total_rows; // The final filter return outside
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.