你能从模板部分制作 WooCommerce 简码吗?

Can you make WooCommerce shortcodes from template parts?

我有兴趣创建基本上填充 WooCommerce 结帐模板部分的简码。例如,在我的子主题的 functions.php 中:

function shortcode_review_order() {
    //get the template part from woocommerce/templates/checkout/review-order.php
    wc_get_template_part('checkout/review-order');
}
add_shortcode( 'custom_review_order', 'shortcode_review_order' );

...然后在我的页面...

<div>[custom_review_order]</div>

当我尝试这样做时,我的结账页面上没有任何内容。

这可能吗?

您的代码中几乎没有错误...

首先,您应该使用 init 挂钩添加简码。

add_action( 'init', 'add_shortcodes' );
function add_shortcodes(){
    add_shortcode( 'custom_review_order', 'shortcode_review_order' );
}

那么您缺少模板的 .php 部分。它还需要如下所示的数组参数。使用 wc_get_template 可能会得到更准确的结果。

function shortcode_review_order(){
    wc_get_template( 'checkout/review-order.php', array( 'checkout' => WC()->checkout() ) );
}

要了解有关如何正确使用其模板的更多信息,请在插件上搜索每个模板。你会看到它是如何被使用的。您还可以获得有关如何自己使用它的提示。

我发现 wc_get_template 回显了模板,相反,对于返回模板的短代码更好。您可以使用:

$string = wc_get_template_html( $template_name, $args, $template_path, $default_path );

是"Like wc_get_template, but returns the HTML instead of outputting."

https://docs.woocommerce.com/wc-apidocs/function-wc_get_template_html.html