为WordPress / WooCommerce中的钩子函数设置正确的优先级

问题描述 投票:0回答:1

如何在没有连续尝试错误的情况下发现钩子函数的正确优先级?

我必须在正常价格之下的产品页面中找到“数字价格”(precio digital)。

php代码是这样的:

add_action( 'woocommerce_single_product_summary', "show_digital_price", 10 );

正如您现在所看到的,数字价格高于正常价格:https://www.editorialufv.es/catalogo/territory-inhabited/

我应该更改数字10并放置,例如,11,或12

我的问题:如果没有试错法,有没有快速找到正确的优先级数字的方法?

php wordpress woocommerce hook price
1个回答
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在此挂钩上使用的优先级的信息。

所以你可以使用你的show_digital_price()函数1119之间的优先级......

现在有时其他插件或/和一些主题可以使用其他一些优先级。在这种情况下,您可以使用此小代码段:

global $wp_filter;
echo '<pre>';
print_r( $wp_filter['woocommerce_single_product_summary'] );
echo '</pre>';

这将输出一个数组中的所有钩子函数,其中包含已使用的优先级和已定义钩子的接受参数(此处为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 Subscriptions插件在优先级31处添加了一个钩子。

© www.soinside.com 2019 - 2024. All rights reserved.