Wordpress / Woocommerce Hook в функции - PullRequest
0 голосов
/ 29 января 2020

Я ценю вопросы, подобные этим, которые задавались ранее, но ответы, которые я пробовал, не делают то, что мне нужно.

В основном,

У меня есть этот файл в плагине woocommerce структура папок:

wp-content \ plugins \ woocommerce \ includes \ w c -coupon-functions. php

Внутри файла находится следующая функция :

function wc_get_cart_coupon_types() {
    return (array) apply_filters( 'woocommerce_cart_coupon_types', array( 'fixed_cart') );
}

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

  1. Создание того же файла в моем файле пользовательской темы
  2. , перехватывая функцию в моем файле функций с помощью следующего кода:

    function woocommerce_coupon_get_cart_coupon_types () {return (array) apply_filters ('woocommerce_cart_coupon_types', array ('fixed_cart', 'custom_discount')); }

    add_filter ('wc_get_cart_coupon_types', 'woocommerce_coupon_get_cart_coupon_types', 10, 1);

Любые другие предложения будут высоко оценены, также ..... I ' Мы внесли изменения прямо в файл, и это определенно работает. Спасибо

1 Ответ

2 голосов
/ 29 января 2020

Ваш # 2 подход вроде того, как это сделать, но вы, по сути, попали в такую ​​ситуацию, как вы это сделали.

Вам нужно сделать это следующим образом:

function wpso59974749_woocommerce_coupon_get_cart_coupon_types( $data ) { 
    $data[ 'your_new_key_here' ] = 'your new value here';
    return $data;
}

add_filter('woocommerce_cart_coupon_types','wpso59974749_woocommerce_coupon_get_cart_coupon_types',10, 1);

Вы не должны добавлять apply_filter обратно в вашу функцию, так как это застрянет в al oop - по существу, перефильтровывая себя снова и снова.

Я поставил перед вашей функцией префикс, так что если есть другая woocommerce_coupon_get_cart_coupon_types функция, она не будет конфликтовать.

...