Как отменить работу функции php в одной категории?

Собственно вот функция изменения цены по курсу woocommerce:
add_action ('admin_menu', 'dynamic_price_button');
add_action ('woocommerce_get_price', 'change_price');
remove_action ('woocommerce_get_price', 'change_price2');
add_action( 'admin_init', 'register_mysettings' );

function register_mysettings () {
	register_setting( 'baw-settings-group', 'kurs' );
	register_setting( 'baw-settings-group', 'valuta' );
}

function change_price ($this) {
	$int = $this;
	$kurs=get_option('kurs');
	if ($kurs!='') {
		return $int*$kurs;}
		
	else  return  $int;
	
}
	
function dynamic_price_button () {
	add_submenu_page ('woocommerce', 'Курс сегодня', 'Курс сегодня', 'manage_options', 'dynamic_price', 'setting_page');
}

...

Далее идет инпут с get_option('kurs');

Определить категорию, для которой нужно отменить работу функции - я могу
if( has_term( '1489', 'product_cat' ,$product->ID) )


а вот как применить определенную категорию к этой части кода
function change_price ($this) {
	$int = $this;
	$kurs=get_option('kurs');
	if ($kurs!='') {
		return $int*$kurs;}
		
	else  return  $int;
	
}

я не понимаю. Подскажите.

Если вставить в начало части кода категорию, то изменения по формуле буду только в той категории, в которой скажу - то есть:
function change_price ($this) {
        if( has_term( '1489', 'product_cat' ,$product->ID) ) /*категория */
	$int = $this;
	$kurs=get_option('kurs');
	if ($kurs!='') {
		return $int*$kurs;}
		
	else  return  $int;
	
}


а мне нужно чтоб в ней не происходила функция.
что делаю не так?
  • Вопрос задан
  • 271 просмотр
Решения вопроса 1
Punkie
@Punkie
function change_price ($this) {
        if( !has_term( '1489', 'product_cat' ,$product->ID) ) /*категория --вот тут в начале добавил !*/
  $int = $this;
  $kurs=get_option('kurs');
  if ($kurs!='') {
    return $int*$kurs;}
    
  else  return  $int;
  
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Silm
Во-первых форматируйте код по человечески (почитайте про codestyle).
Во-вторых, делайте проверку, что категория НЕ является той в которой надо выключить функцию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы