有没有一种方法可以挂钩或调用不属于WooCommerce默认模板的自定义Woocomerces模板?

时间:2020-08-28 作者:clestcruz

因此,我目前正在使用Woocommerce,并设法找出如何基于文档覆盖模板。现在我遇到了一个问题,所以我设法覆盖了一个特定的模板upsell.php. 现在我需要创建另一个upsell.php 提供不同布局的模板。我们就叫它吧up-sell-alternate.php

现在我的问题是,是否可以创建一个钩子并获取该自定义模板,即使它不是Woocomece模板的一部分。

我需要重用woocommerce模板的各个部分,并为每个模板提供不同的布局。我在woocommerce的文档中找不到符合我问题的东西

1 个回复
SO网友:Antti Koskinen

你可以考虑使用好的ol\'get_template_part( string $slug, string $name = null, array $args = array() 函数,它是本机WP函数。尤其是现在,它支持将数据传递到模板文件的第三个参数(自WP 5.5以来)。

在(子)主题函数中创建函数。php文件)的get_template_part() 调用并将其挂接到WooCommerce提供的适当操作上。

https://developer.wordpress.org/reference/functions/get_template_part/

EDIT 30.8.2020

例如,您可以在(子)主题目录中具有以下结构,

/my-child-theme
--/parts
----/my-template-part.php
----/my-template-part-alt.php
要使用自定义模板部件,可以在functions.php 文件

add_action( \'some_woocommerce_template_action\', \'my_fancy_template_part\' );
function my_fancy_template_part() {
    // pass data to the template part in an array
    $args = array(
        \'key_1\' => \'foo\',
        \'key_2\' => \'bar\',
    );
    get_template_part( \'/parts/my-template-part\', null, $args );
}

add_action( \'some_other_woocommerce_template_action\', \'my_fancy_template_part_alternative\' );
function my_fancy_template_part_alternative() {
    // get a "named" part with shared prefix
    get_template_part( \'/parts/my-template-part\', \'alt\' );
}
如果将$args作为第三个参数传递给get_template_part(), 您可以像这样在模板零件文件中访问它们,

echo $args[\'key_1\']; // foo

相关推荐

在wp-config-sample.php中找到回车控制字符(^M)

在Linux发行版中新安装WordPress时,wp-config-sample.php 包含任何其他字符中都找不到的回车控制字符。发行版中的php文件。跑步egrep -l $\'\\r\'\\$ *.php 在WP的基本目录中,将仅返回wp-config-sample.php我不担心消除控制字符,也不担心它会干扰安装操作(不会)。我只是想知道为什么wp-config-sample.php 是唯一存在此异常的文件。WP versions问题was reported 在版本4.6.15中。它仍然