Домой Wp-Recall WP-Recall: Вопросы и ответы Сделать так чтоб функция php срабатывала только для тех у кого есть доступ WAU
7ответ(ов) в теме
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
1
03:48
Версия WP-Recall: 16.24.28

Привет коллеги!
Мне нужно сделать один хитрый финт со скидками для тех кому дан доступ в 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.

0
Андрей CS
не в сети 3 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
2
11:22

перед выполнением своего кода просто проверяйте имеет ли текущий пользователь нужный доступ, если нет, то заворачивайте
код который вы пробовали использовать, вполне верный

0
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
3
15:44

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 { ''; }

}
}
 
}

Редакции сообщения
12.11.2020 15:44SergeyNetПричина: не указано
0
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
4
16:04

И еще, пользуясь возможностью, хочу спросить у мудрого Андрея:)
Я вот не до конца понимаю как связана вот эта строчка:
$account_ids = array(1,3);
С созданными мною аккаунтами доступа. Я вот эту строчку просто как мартышка скопировал и использовал.

Вот например, есть созданный мною аккаунт доступа:
Созданный аккаунт доступа

Как мне понять какой у него id, чтоб прописать его в этой строчке $account_ids = array(1,3); работать именно с этим аккаунтом доступа

И почему в этой строчке $account_ids = array(1,3); прописаны 1,3 :)?

0
Preci
не в сети 4 дня
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1646
5
17:14

Оборачивать в условие саму функцию 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;
}

1
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
6
17:22

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 { ''; }

}
}

Правильно?

0
Preci
не в сети 4 дня
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1646
7
17:30

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;
  }

}

0
Вы не имеете права на публикацию сообщений в этой теме