Intereting Posts
WP3.5 Media Uploader – как заставить его принимать несколько изображений? Получение пользовательской таблицы в массив Как использовать shortcode внутри короткого кода в теме Хороший способ добавить другое фоновое изображение для каждой страницы? Как классифицировать страницы? Должен ли я использовать _n для местоимений в переводе? Как сохранить текст комментария в форме комментария после регистрации / регистрации? Как размещать сообщения на страницах с использованием запросов Woocommerce: добавьте столбец на страницу администратора ORDERS с покупками предметов Извлечь встроенное видео из содержимого Фильтр lostpassword_redirect не используется WordPress template – Как добавить класс в тег li, если существует подменю Попытка положить текст и ссылки в заголовок Переключение одного сайта на многостраничный сайт Рассчитать средние категории перекрестных сообщений

Использование крючков с дополнительными параметрами

Я хочу добавить свою собственную функцию к уже существующему крюку. Вот определение:

do_action( 'woocommerce_before_single_product_summary' ); 

Исходная функция, использующая ее, выглядит так:

 add_action( 'woocommerce_before_single_product_summary', 'woocommerce_template_single_title', 5 ); 

Поскольку я не хочу касаться темы, ни шаблонов Woocommerce, я хочу добавить свою собственную функцию, но с более низким приоритетом и тремя дополнительными параметрами:

 add_action( 'woocommerce_before_single_product_summary', 'my_own_function', 6, 3); 
  • Является ли это возможным?
    • Если да, где эти параметры определены?
  • Если не,
    • Возможно ли использовать глобальные значения?
    • Есть ли другое решение моей проблемы?

Solutions Collecting From Web of "Использование крючков с дополнительными параметрами"

поскольку

 do_action( 'woocommerce_before_single_product_summary' ); 

не имеет дополнительных входных аргументов, таких как:

 do_action( 'woocommerce_before_single_product_summary', $args1, $args2, $args3 ); 

то ваш обратный вызов будет всегда вызываться без каких-либо входных аргументов.

 function my_own_function () { // ... } 

Таким образом, вам придется получить его другими способами: например, через функции, классы или нажав значения из других крючков.

Но вы можете с уверенностью изменить приоритет:

 add_action( 'woocommerce_before_single_product_summary', 'my_own_function', 5 ); 

Если вы можете изменить его, например, в своей дочерней теме, чтобы:

 do_action( 'woocommerce_before_single_product_summary', $args1, $args2, $args3 ); 

то вы можете использовать:

 add_action( 'woocommerce_before_single_product_summary', 'my_own_function', 5, 3 ); 

с обратным вызовом:

 function my_own_function ( $args1, $args2, $args3 ) { // ... you have now access to $args1, $args2, $args3 }