【问题标题】:Woocommerce - add order again on thankyou pageWoocommerce - 在谢谢页面上再次添加订单
【发布时间】:2021-10-16 07:30:57
【问题描述】:

我试图将再次订购按钮放在感谢页面上,但它不起作用,我做错了什么?

感谢页面上的代码

<?php echo esc_url( $order_again_url ); ?>

在我的function.php中我正在使用

add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'add_order_again_status', 10, 1);

function add_order_again_status($array){
    $array = array_merge($array, array('on-hold', 'processing', 'pending-payment', 'cancelled', 'refunded'));
    return $array;
}

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    仅允许在订单状态 -> 已完成的情况下重新订购。 如果您想在thankyou页面上重新订购,那么首先您应该允许重新订购状态为暂停、待处理、处理等。 像这样:

    add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'allowed_order_again_status', 10, 1);
    function allowed_order_again_status($array){
        $array = array_merge($array, array('on-hold','pending', 'processing', 'completed'));
        return $array;
    }
    

    然后使用 woocommerce_thankyou 钩子添加重新排序按钮,如下所示:

    add_filter( 'woocommerce_thankyou', 're_order_woocommerce_thankyou', 4 );
    function re_order_woocommerce_thankyou($order_id) {
        $order = wc_get_order($order_id);
        if ( $order->has_status( 'completed' ) || $order->has_status( 'processing' ) || $order->has_status( 'pending' ) || $order->has_status( 'on-hold' ) ) {
            $actions['order-again'] = array(
                'url'  => wp_nonce_url( add_query_arg( 'order_again', $order->id ) , 'woocommerce-order_again' ),
                'name' => __( 'Order Again', 'woocommerce' )
            ); 
            ?>
            <a class="btn btn-primary" href="<?php echo $actions['order-again']['url'];?>" ><?php echo $actions['order-again']['name'];?> </a>
            <?php 
            return $order_id;
        }
    }
    

    注意:重新排序按钮将在页面的底部可见,但如果您希望重新排序按钮位于感谢页面上的任何位置,那么您应该覆盖感谢页面,只需从 woocommerce 插件复制并在您的活动主题中过去-> woocommerce ->thankyou.php 并相应地添加重新排序按钮

    【讨论】:

      【解决方案2】:

      我的帐户页面的重新排序按钮/链接 -> 像这样的订单标签:

      add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'allowed_order_again_status', 10, 1);
      function allowed_order_again_status($array){
          $array = array_merge($array, array('on-hold','pending', 'processing', 'completed'));
          return $array;
      }
      
      add_filter( 'woocommerce_my_account_my_orders_actions', 'woo_order_again_from_myaccount', 50, 2 );
      function woo_order_again_from_myaccount( $actions, $order ) {
          if ( $order->has_status( 'completed' ) || $order->has_status( 'processing' ) || $order->has_status( 'pending' ) || $order->has_status( 'on-hold' ) ) {
              $actions['order-again'] = array(
                  'url'  => wp_nonce_url( add_query_arg( 'order_again', $order->id ) , 'woocommerce-order_again' ),
                  'name' => __( 'Order Again', 'woocommerce' )
              );
          }
      
          return $actions;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-06-12
        • 1970-01-01
        • 2017-01-21
        • 1970-01-01
        • 2019-12-29
        • 2019-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多