获取 WooCommerce 页面地址的方法

优质
小牛编辑
117浏览
2023-12-01

WooCommerce的顶级页面有商店页、购物车页、结账页、我的账户页和用户协议页,结账页和账户页有次级页面,分别由结账端点和账户端点来指定,也就是endpoints。顶级页面是WordPress里真正的页面,次级页面没有实体页面,只是靠重定向规则动态创造出来的。本文介绍WooCommerce中获取这些页面地址的专用函数。

如何设置WooCommerce顶级页面

一般首次安装时就会提示你设置,如果之后想更改,可以到WooCommerce的高级选项卡下更新设置。这些设置会保存在wp_options表中。

WooCommerce的商店页在产品选项卡下设置。

如何获取顶级页面地址

$shop_url      = wc_get_page_permalink( 'shop' );
$cart_url      = wc_get_page_permalink( 'cart' );
$checkout_url  = wc_get_page_permalink( 'checkout' );
$myaccount_url = wc_get_page_permalink( 'myaccount' );
$privacy_url   = wc_get_page_permalink( 'terms' );

对cart和checkout两个使用频率高的地址,WooCommerce提供了特殊函数。

$cart_url      = wc_get_cart_url();
$checkout_url  = wc_get_checkout_url();

要获取page ID,可以使用wc_get_page_id()函数。

$shop_id      = wc_get_page_id( 'shop' );
$cart_id      = wc_get_page_id( 'cart' );
$checkout_id  = wc_get_page_id( 'checkout' );
$myaccount_id = wc_get_page_id( 'myaccount' );
$privacy_id   = wc_get_page_id( 'terms' );

如何获取账户下的次级页面地址

$orders_url          = wc_get_account_endpoint_url( 'orders' );
$view_order_url      = wc_get_account_endpoint_url( 'view-order' );
$download_url        = wc_get_account_endpoint_url( 'downloads' );
$edit_account_url    = wc_get_account_endpoint_url( 'edit-account' );
$edit_address_url    = wc_get_account_endpoint_url( 'edit-address' );
$payment_methods_url = wc_get_account_endpoint_url( 'payment-methods' );
$lost_password_url   = wc_get_account_endpoint_url( 'lost-password' );
$logout_url          = wc_get_account_endpoint_url( 'customer-logout' );

同样,某些地址定义了快捷函数。

$edit_account_url  = wc_customer_edit_account_url();
$lost_password_url = wc_lostpassword_url();
$logout_url        = wc_logout_url();

获取结账端点页面地址

这些地址都是结账的时候使用的,付款和已收到订单的地址,在订单ID确定的情况下可以稳定获取。添加付款方法、删除付款方法和设置默认付款方式是结算页面用到的,会和网关有关,不能稳定获取。

假设Order ID为1,来获取图中前两项地址。

$order              = wc_get_order( 1 );
$payment_url        = $order->get_checkout_payment_url();
$order_received_url = $order->get_checkout_order_received_url();

如果要获取添加付款方法地址,可以用wc_get_endpoint_url()函数,$value是附加在url后面的参数,用法如下:

// 用法:wc_get_endpoint_url( $endpoint, $value = '', $permalink = '' )
$add_payment_url = wc_get_endpoint_url( 'add-payment-method', '', wc_get_checkout_url() );

在设置中更改endpoint地址后会怎么样

更改后依然用上面的方法来获取地址,默认设置里显示的endpoints就是默认的endpoints。例如你把查看订单地址从“view-order”改成“view-your-order”,则

$view_order_url = wc_get_account_endpoint_url( 'view-order' );
//返回值
// https://www.xnip.cn/my-account/view-your-order