Я хочу получить персонализированную оценку с functions.php. Для страницы магазина woocommerce я хочу, чтобы результат был следующим. Я создал пользовательскую таксономию (команду), и я применяю специальную цену от бэкэнда.
Например:
1. Taxonomy : Team1 a) Product Id : 17, Price =222; //Original price $45 b) Product Id : 18, Price = 444; // Original price $55 2. Taxonomy : Team2 a) Product Id : 17, Price =999; //Original price $45 b) Product Id : 18, Price = 888; // Original price $55
Как я могу получить свой пример вывода с помощью следующего кода? Если какие-либо изменения или модификации, пожалуйста, дайте мне знать.
Я использую следующий код:
add_filter( 'woocommerce_get_regular_price', function ($price, $productd ) { foreach($_SESSION['my_array'] as $id => $price1) : $regular_price = get_post_meta(get_the_ID(), '_regular_price'); $price = $regular_price[0]; if(get_the_ID() == $id) : return $price1; else : return $price; endif; endforeach; }, 10, 2 );
Спасибо, Сатя
Как только я исправил ошибки анализа, код из вашего комментария работает.
add_filter('woocommerce_get_price','change_price', 10, 2); add_filter('woocommerce_get_regular_price','change_price', 10, 2); add_filter('woocommerce_get_sale_price','change_price', 10, 2); function change_price($price, $productd){ if($productd->id == 16): $price = 160; endif; return $price; }
Изменив это, чтобы проверять продукты в определенном таксономии, мы просто используем has_term( $term, $taxonomy, $post )
. Вам нужно будет скорректировать срок и налоговые слизни.
add_filter('woocommerce_get_price','change_price', 10, 2); add_filter('woocommerce_get_regular_price','change_price', 10, 2); add_filter('woocommerce_get_sale_price','change_price', 10, 2); function change_price($price, $productd){ if( has_term( 'team1', 'teams', $productd->id ) ): $price = 160; endif; return $price; }
Обновить
Читая свой новый вопрос, кажется, что вы идете по этому поводу (я все равно мог вас недопонимать). Если продукт 1 находится в обеих командах 1 и 2, вы можете изменить цену на странице таксономии с помощью is_taxonomy("team-A")
но все функции add_to_cart()
не будут знать, чтобы использовать правильную цену, потому что не будет способ определить, какую цену он должен использовать на основе термина (поскольку продукт находится в обоих терминах).
Если вы хотите отображать разные цены для разных групп пользователей, тогда вам понадобятся пользовательские возможности пользователя и использовать их для проверки, если текущий пользователь имеет эту кепку или нет .ex: current_user_can('team-b')
.