Php woocommerce\u loop\u add\u to\u cart\u link过滤器钩子如何深入工作?
我有一些基本的商业问题,在网上找不到Php woocommerce\u loop\u add\u to\u cart\u link过滤器钩子如何深入工作?,php,wordpress,woocommerce,product,hook-woocommerce,Php,Wordpress,Woocommerce,Product,Hook Woocommerce,我有一些基本的商业问题,在网上找不到 从下面的代码来看,$args来自哪里 $product和$ARG如何分配给%s 谢谢 global$产品; echo apply_过滤器('woocommerce_loop_add_to_cart_link',//WPCS:XSS ok。 sprintf(“”, esc_url($product->add_to_cart_url()), esc_attr(isset($args['quantity'])?$args['quantity']:1), esc
- 从下面的代码来看,$args来自哪里李>
- $product和$ARG如何分配给%s
global$产品;
echo apply_过滤器('woocommerce_loop_add_to_cart_link',//WPCS:XSS ok。
sprintf(“”,
esc_url($product->add_to_cart_url()),
esc_attr(isset($args['quantity'])?$args['quantity']:1),
esc_attr(isset($args['class'])?$args['class']:'button'),
isset($args['attributes'])?wc_内爆html_属性($args['attributes']):“”,
esc_html($product->add_to_cart_text())
),
$product,$args);
1)模板文件中$args变量的解释循环/add_to_cart.php
:
问题中的代码来自模板文件。它由钩子上的模板文件调用: 正如您所见,模板函数完成了这项工作,它位于WooCommerce插件的
includes/wc template functions.php
下
因此,默认参数是:
$defaults = array(
'quantity' => 1,
'class' => implode(
' ',
array_filter(
array(
'button',
'product_type_' . $product->get_type(),
$product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
$product->supports( 'ajax_add_to_cart' ) && $product->is_purchasable() && $product->is_in_stock() ? 'ajax_add_to_cart' : '',
)
)
),
'attributes' => array(
'data-product_id' => $product->get_id(),
'data-product_sku' => $product->get_sku(),
'aria-label' => $product->add_to_cart_description(),
'rel' => 'nofollow',
),
);
它们通过过滤器钩子woocommerce\u loop\u add\u to\u cart\u args来解析:
$args = apply_filters( 'woocommerce_loop_add_to_cart_args', wp_parse_args( $args, $defaults ), $product );
…允许对此参数进行更改
woocommerce\u loop\u add\u to\u cart\u链接
中的$args
变量就是由该变量构成的
2) 如何将$product
和$args
分配给%s
:
这是特定于PHPprintf()
和sprintf()
函数的,其中每个%s
都是占位符
在''中
:
- 第一个占位符
%s
将替换为esc\u url($product->add\u to\u cart\u url())
- 第二个占位符
%s
byesc_attr(isset($args['quantity'])?$args['quantity']:1)
等等…
和php函数的文档。1)模板文件中$args变量的说明loop/add_to_cart.php
:
问题中的代码来自模板文件。
它由钩子上的模板文件调用:
正如您所见,模板函数完成了这项工作,它位于WooCommerce插件的includes/wc template functions.php
下
因此,默认参数是:
$defaults = array(
'quantity' => 1,
'class' => implode(
' ',
array_filter(
array(
'button',
'product_type_' . $product->get_type(),
$product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
$product->supports( 'ajax_add_to_cart' ) && $product->is_purchasable() && $product->is_in_stock() ? 'ajax_add_to_cart' : '',
)
)
),
'attributes' => array(
'data-product_id' => $product->get_id(),
'data-product_sku' => $product->get_sku(),
'aria-label' => $product->add_to_cart_description(),
'rel' => 'nofollow',
),
);
它们通过过滤器钩子woocommerce\u loop\u add\u to\u cart\u args来解析:
$args = apply_filters( 'woocommerce_loop_add_to_cart_args', wp_parse_args( $args, $defaults ), $product );
…允许对此参数进行更改
woocommerce\u loop\u add\u to\u cart\u链接
中的$args
变量就是由该变量构成的
2) 如何将$product
和$args
分配给%s
:
这是特定于PHPprintf()
和sprintf()
函数的,其中每个%s
都是占位符
在''中
:
- 第一个占位符
%s
将替换为esc\u url($product->add\u to\u cart\u url())
- 第二个占位符
%s
byesc_attr(isset($args['quantity'])?$args['quantity']:1)
等等…
和php函数的文档。感谢您的详细解释!我看不到esc_url($product->add_to_cart_url())的传递位置,对于…class=“%s”%s>%s,第一个%s是类数组,然后是属性数组,最后一个%s来自哪里?谢谢谢谢你的详细解释!我看不到esc_url($product->add_to_cart_url())的传递位置,对于…class=“%s”%s>%s,第一个%s是类数组,然后是属性数组,最后一个%s来自哪里?谢谢