如何在没有连续尝试错误的情况下发现钩子函数的正确优先级?
我必须在正常价格之下的产品页面中找到“数字价格”(precio digital)。
php代码是这样的:
add_action( 'woocommerce_single_product_summary', "show_digital_price", 10 );
正如您现在所看到的,数字价格高于正常价格:https://www.editorialufv.es/catalogo/territory-inhabited/
我应该更改号码10
并输入11
或12
。
我的问题:如果没有试错法,有没有快速找到合适的优先号?
答案 0 :(得分:2)
在content-single-product.php
模板文件中激活了 woocommerce_single_product_summary
挂钩,您会看到:
<?php
/**
* woocommerce_single_product_summary hook.
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_rating - 10
* @hooked woocommerce_template_single_price - 10
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_meta - 40
* @hooked woocommerce_template_single_sharing - 50
* @hooked WC_Structured_Data::generate_product_data() - 60
*/
do_action( 'woocommerce_single_product_summary' );
?>
这将为您提供有关WooCommerce在此钩子上使用的优先级的信息。
因此,您可以在{strong>
show_digital_price()
和11
之间优先使用19
函数...
现在有时其他插件或/和一些主题可以使用其他一些优先级。在这种情况下,您可以使用这个小代码片段:
global $wp_filter;
echo '<pre>';
print_r( $wp_filter['woocommerce_single_product_summary'] );
echo '</pre>';
这将输出数组中所有已挂钩的函数,其中包含已使用的优先级和已定义的hook (此处为woocommerce_single_product_summary
动作挂钩)的接受参数。
下面是实际输出的示例:
WP_Hook Object (
[callbacks] => Array (
[5] => Array (
[woocommerce_template_single_title] => Array (
[function] => woocommerce_template_single_title
[accepted_args] => 1
)
)
[10] => Array (
[woocommerce_template_single_rating] => Array (
[function] => woocommerce_template_single_rating
[accepted_args] => 1
)
[woocommerce_template_single_price] => Array (
[function] => woocommerce_template_single_price
[accepted_args] => 1
)
)
[20] => Array (
[woocommerce_template_single_excerpt] => Array (
[function] => woocommerce_template_single_excerpt
[accepted_args] => 1
)
)
[30] => Array (
[woocommerce_template_single_add_to_cart] => Array (
[function] => woocommerce_template_single_add_to_cart
[accepted_args] => 1
)
)
[31] => Array (
[WC_Subscriptions_Synchroniser::products_first_payment_date] => Array (
[function] => WC_Subscriptions_Synchroniser::products_first_payment_date
[accepted_args] => 1
)
)
[40] => Array (
[woocommerce_template_single_meta] => Array(
[function] => woocommerce_template_single_meta
[accepted_args] => 1
)
)
[50] => Array (
[woocommerce_template_single_sharing] => Array (
[function] => woocommerce_template_single_sharing
[accepted_args] => 1
)
)
[60] => Array (
[000000007484d339000000001aaf1b88generate_product_data] => Array (
[function] => Array (
[0] => WC_Structured_Data Object (
[_data:WC_Structured_Data:private] => Array ( )
)
[1] => generate_product_data
)
[accepted_args] => 1
)
)
)
[iterations:WP_Hook:private] => Array ( )
[current_priority:WP_Hook:private] => Array ( )
[nesting_level:WP_Hook:private] => 0
[doing_action:WP_Hook:private] =>
)
正如您在此示例中所看到的,Woocommerce订阅插件以优先级31
添加了一个钩子。