Привет коллеги!
Мне нужно сделать один хитрый финт со скидками для тех кому дан доступ в WAU, не будем вдаваться в детали, вопрос в другом. Я нашел один код php для настройки скидок.
Суть вопроса - мне нужно сделать так чтоб мой код:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' ); function add_custom_price( $cart_object ) { foreach ( $cart_object->cart_contents as $key => $value ) { if ($value['quantity']>=2 && $value['quantity']<5) { $discount = $value['data']->price * 0.02; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=5 && $value['quantity']<10) { $discount = $value['data']->price * 0.05; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=10) { $discount = $value['data']->price * 0.10; $value['data']->price = $value['data']->price - $discount; } else { ''; } } }
Применился только к тем кому дан доступ в WAU.
Я пробовал вот такую штуку:
global $WAU_User; //идентификаторы доступа, //которыми закрываем контент $account_ids = array(1,3); //соответствие доступа $important = 0; //1 if($WAU_User->is_branch_access($account_ids, $important)){ ?>
Но не получилось.
Вобщем буду очень благодарен если вы мне подскажите с кодом, как делать так чтоб нужные мне функции срабатывали для тех кому дан доступ в WAU.
global $WAU_User;
//идентификаторы доступа,
//которыми закрываем контент
$account_ids = array(1,3);//соответствие доступа
$important = 0; //1
if($WAU_User->is_branch_access($account_ids, $important)){ ?>
Здравствуйте Андрей!
Да, код вполне верный, потому-что писал его умный человек - вы:) И он работает когда я применяю его на обычных страницах для скрытие контента.
Но, когда я пробую обернуть нужную мне функцию этим кодом и это все вставляю в function.php то при заходе на сайт выдает фатальную ошибку:
Fatal error: Uncaught Error: Call to a member function is_branch_access() on null in /home/customer/www/minnadenoukasan.life/public_html/wp-content/themes/minnadenoukasan/functions.php:344 Stack trace: #0 /home/customer/www/minnadenoukasan.life/public_html/wp-settings.php(514): include() #1 /home/customer/www/minnadenoukasan.life/public_html/wp-config.php(89): require_once('/home/customer/...') #2 /home/customer/www/minnadenoukasan.life/public_html/wp-load.php(37): require_once('/home/customer/...') #3 /home/customer/www/minnadenoukasan.life/public_html/wp-blog-header.php(13): require_once('/home/customer/...') #4 /home/customer/www/minnadenoukasan.life/public_html/index.php(17): require('/home/customer/...') #5 {main} thrown in /home/customer/www/minnadenoukasan.life/public_html/wp-content/themes/minnadenoukasan/functions.php on line 344
Код в function.php я вставляю вот такой:
global $WAU_User; //идентификаторы доступа, //которыми закрываем контент $account_ids = array(1,3); //соответствие доступа $important = 0; //1 if($WAU_User->is_branch_access($account_ids, $important)){ function add_custom_price( $cart_object ) { foreach ( $cart_object->cart_contents as $key => $value ) { if ($value['quantity']>=2 && $value['quantity']<5) { $discount = $value['data']->price * 0.02; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=5 && $value['quantity']<10) { $discount = $value['data']->price * 0.05; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=10) { $discount = $value['data']->price * 0.10; $value['data']->price = $value['data']->price - $discount; } else { ''; } } } }
И еще, пользуясь возможностью, хочу спросить у мудрого Андрея:)
Я вот не до конца понимаю как связана вот эта строчка:
$account_ids = array(1,3);
С созданными мною аккаунтами доступа. Я вот эту строчку просто как мартышка скопировал и использовал.
Вот например, есть созданный мною аккаунт доступа:
Как мне понять какой у него id, чтоб прописать его в этой строчке $account_ids = array(1,3);
работать именно с этим аккаунтом доступа
И почему в этой строчке $account_ids = array(1,3);
прописаны 1,3 :)?
Оборачивать в условие саму функцию function add_custom_price( $cart_object ) - не надо
Достаточно в теле функции перед foreach проверить:
global $WAU_User; //идентификаторы доступа, //которыми закрываем контент $account_ids = array(1,3); //соответствие доступа $important = 0; //1 //Если доступа нет - прекращаем выполнение if(!$WAU_User->is_branch_access($account_ids, $important)){ return; }
Preci
Здравствуйте Preci!
Спасибо за то что помогаете!
Хочу уточнить - вы предлагаете сделать вот так:
function add_custom_price( $cart_object ) { global $WAU_User; //идентификаторы доступа, //которыми закрываем контент $account_ids = array(1,3); //соответствие доступа $important = 0; //1 //Если доступа нет - прекращаем выполнение if(!$WAU_User->is_branch_access($account_ids, $important)){ foreach ( $cart_object->cart_contents as $key => $value ) { if ($value['quantity']>=2 && $value['quantity']<5) { $discount = $value['data']->price * 0.02; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=5 && $value['quantity']<10) { $discount = $value['data']->price * 0.05; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=10) { $discount = $value['data']->price * 0.10; $value['data']->price = $value['data']->price - $discount; } else { ''; } } }
Правильно?
function add_custom_price( $cart_object ) { global $WAU_User; //идентификаторы доступа, //которыми закрываем контент $account_ids = array(1,3); //соответствие доступа $important = 0; //1 //Если доступа нет - прекращаем выполнение if(!$WAU_User->is_branch_access($account_ids, $important)){ return; } foreach ( $cart_object->cart_contents as $key => $value ) { if ($value['quantity']>=2 && $value['quantity']<5) { $discount = $value['data']->price * 0.02; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=5 && $value['quantity']<10) { $discount = $value['data']->price * 0.05; $value['data']->price = $value['data']->price - $discount; } elseif ($value['quantity']>=10) { $discount = $value['data']->price * 0.10; $value['data']->price = $value['data']->price - $discount; } }