Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php woocommerce\u loop\u add\u to\u cart\u link过滤器钩子如何深入工作?_Php_Wordpress_Woocommerce_Product_Hook Woocommerce - Fatal编程技术网

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

这是特定于PHP
printf()
sprintf()
函数的,其中每个
%s
都是占位符

''中

  • 第一个占位符
    %s
    将替换为
    esc\u url($product->add\u to\u cart\u url())
  • 第二个占位符
    %s
    by
    esc_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

这是特定于PHP
printf()
sprintf()
函数的,其中每个
%s
都是占位符

''中

  • 第一个占位符
    %s
    将替换为
    esc\u url($product->add\u to\u cart\u url())
  • 第二个占位符
    %s
    by
    esc_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来自哪里?谢谢