Wordpress — apply_filter, который я не могу подключить ни к одному add_filter

Я пытаюсь отредактировать плагин для wordpress (woocommerce) и очень часто нахожу строки, в которых используется функция apply_filter, например, вот такая:

return apply_filters ( 'woocommerce_get_variation_sale_price', $price, $this, $min_or_max, $display );

К сожалению, я не могу понять, что делает этот фильтр, потому что не могу отследить, где используется тег. Я безуспешно сканировал (с помощью поиска в eclipse) рабочую область, я не могу найти add_filter с этой «woocommerc_get_variation_sale_price».

Как это возможно? Читая документацию двух функций, они должны быть связаны...

Я застрял


person Gianmarco    schedule 26.10.2014    source источник


Ответы (1)


Функция apply_filters() выполнит любую функцию, которая была подключена к ней с помощью add_filter( $hook, $function_name, $priority, $num_arguments ), а остальные значения будут переданы функции в качестве аргументов. Как правило, именно так работают хуки WordPress Action и Filter для расширения функциональности ядра WordPress или плагинов — в данном случае WooCommerce.

Это означает, что код в вашем примере может использоваться для того, чтобы позволить вам или другим подключаемым модулям изменить значение $price, возвращаемое подключаемыми модулями. Он предоставляет вам родительский объект ($this), а также другую информацию о переменных, используемых для расчета цены.

ЕСЛИ вы не можете найти другие ссылки на эту строку (в вашем примере отсутствует буква "e" в имени фильтра), это означает, что к этому фильтру ничего не подключено и значение $price не изменяется.

Если вы хотите добавить хук для фильтрации значения $price перед его возвратом, это будет выглядеть следующим образом.

// the name of the filter, the hooked function, the priority, and the # of args
add_filter( 'woocommerce_get_variation_sale_price', 'my_woocommerce_get_variation_sale_price', 10, 4 ); 
function my_woocommerce_get_variation_sale_price( $price, $product, $min_or_max, $display ){
    // Use the arguments to do whatever you want to 
    // the $price before it is returned.
    return $price;
}
person doublesharp    schedule 26.10.2014
comment
Я не могу понять, почему вы говорите, что в имени фильтра отсутствует буква e, я проверил и (скопировал), строка верна, и действительно, я не могу найти никакой другой ссылки на это конкретное имя фильтра. Это означает, что каждый apply_filter, который я вижу в своем файле, бесполезен? Так зачем их поставили? Это не имеет для меня особого смысла, хотя то, что вы говорите о том, как добавлять и применять работу, правильно... - person Gianmarco; 27.10.2014
comment
hookr.io/filters/woocommerce_get_variation_sale_price Я проверил также здесь и свою теорию о том, что этот крючок никогда эффективно не подключался к функции верно... - person Gianmarco; 27.10.2014