你能从模板部分制作 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
我有兴趣创建基本上填充 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