【问题标题】:How to create a shortcode for Woocommerce view-order template?如何为 Woocommerce 查看订单模板创建简码?
【发布时间】:2021-08-31 15:26:31
【问题描述】:

我想为view-order.php模板创建一个简码,它位于我的子主题/woocommerce/myaccount/view-order.php或者可以通过url访问/my-account/view-order/{id}/我已经阅读了这篇文章How to create a shortcode for custom page template?并调整了代码如下:

function view_order_shortcode() {
   ob_start();
   get_template_part('view-order');
   return ob_get_clean();   
} 
add_shortcode( 'view_order_shortcode', 'view_order_shortcode' );

然后我将<?php echo do_shortcode("[view_order_shortcode]"); ?> 插入到我希望它显示但它不起作用的模板中。

我也读过这篇文章Woocommerce - How to show Order details (my-account) on a separate page,但这篇文章谈论的是my-orders.php 下面的代码可以正常工作。

function woocommerce_orders() {
    $user_id = get_current_user_id();
    if ($user_id == 0) {
         return do_shortcode('[woocommerce_my_account]'); 
    }else{
        ob_start();
        wc_get_template( 'myaccount/my-orders.php', array(
            'current_user'  => get_user_by( 'id', $user_id),
            'order_count'   => $order_count
         ) );
        return ob_get_clean();
    }

}
add_shortcode('woocommerce_orders', 'woocommerce_orders');

但是,我已将其调整为波纹管,但无法正常工作。有什么建议吗?

function woocommerce_orders() {
    $user_id = get_current_user_id();
    if ($user_id == 0) {
         return do_shortcode('[woocommerce_my_account]'); 
    }else{
        ob_start();
        wc_get_template( 'myaccount/view-order.php', array(
            'current_user'  => get_user_by( 'id', $user_id),
         ) );
        return ob_get_clean();
    }

}
add_shortcode('woocommerce_orders', 'woocommerce_orders');

【问题讨论】:

    标签: woocommerce


    【解决方案1】:

    view-order.php 模板需要两个参数才能使其工作。

    1. 订购
    2. order_id

    在您的示例中,这应该可行。

    function woocommerce_view_order($params) {
        $order_id = $params['order_id'];  // get order id from shortcode params
        $user_id = get_current_user_id();
        if ($user_id == 0) {
             return do_shortcode('[woocommerce_my_account]'); 
        }else{
            ob_start();
            wc_get_template( 'myaccount/view-order.php', array(
                'order' => wc_get_order($order_id), // add this line
                'order_id' => $order_id //add this line
             ) );
            return ob_get_clean();
        }
    
    }
    add_shortcode('woocommerce_view_order', 'woocommerce_view_order');
    

    然后,应用带有订单 ID 的简码:
    示例:[woocommerce_view_order order_id=103]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      相关资源
      最近更新 更多