WooCommerce客户最后订单"Order Again"简码



我对此还很陌生,但我正在学习。我正在尝试创建一个可以插入网站任何位置的快捷代码,允许客户再次订购他们以前的订单。

换句话说,我需要使客户能够";再次订购";他们最后的订单。主要问题是,当我尝试这个时,网站会变成空白(白色屏幕(。

你知道这里出了什么问题吗?

add_shortcode( 'order_again', 'matt_order_again' );
function matt_order_again( $order ) {
if ( is_user_logged_in() ) {
$user_id = get_current_user_id();
$customer = new WC_Customer( $user_id );
$last_order = $customer->get_last_order();
if ( $last_order->has_status( 'completed' ) ) {
$actions['order-again'] = array(
'url' => wp_nonce_url( add_query_arg( 'order_again', $order->get_id(), wc_get_cart_url() ), 'woocommerce-order_again' ),
'name' => __( 'Order again', 'woocommerce' ),
);
}
return $actions;
}
}

我尝试添加WC的全局变量。

试试这个:

add_shortcode( 'order_again', 'matt_order_again' );
function matt_order_again( $order ) {
if ( is_user_logged_in() ) {
$user_id = get_current_user_id();
$customer = new WC_Customer( $user_id );
$last_order = $customer->get_last_order();

if ( $last_order->has_status( 'completed' ) ) {
$actions['order-again'] = array(
'url' => wp_nonce_url( add_query_arg( 'order_again', $last_order->get_id(), wc_get_cart_url() ), 'woocommerce-order_again' ),
'name' => __( 'Order again', 'woocommerce' ),
);
}
return $actions;
}
}

或者,如果你想再次使用shorcode返回一个带有url的按钮进行订购,请使用此代码(已编辑(。

add_shortcode('order_again', 'matt_order_again');
function matt_order_again($order)
{
if (is_user_logged_in()) {
global $woocommerce;
ob_start();
$user_id = get_current_user_id();
$customer = new WC_Customer($user_id);
$last_order = $customer->get_last_order();
if(!$last_order){
return;
}
if ($last_order->has_status('completed')) {
$url = wp_nonce_url(add_query_arg('order_again', $last_order->get_id(), wc_get_cart_url()), 'woocommerce-order_again');
echo '<a href="' . $url . '">' . __('Order Again', 'woocomerce') . '</a>';
}
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}

}

最新更新