获取 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