在woocommerce文档之后,我在woocommerce的“我的帐户”页面中添加了一个内部结局。
我想让此端点仅对特定用户角色可见,例如shop_manager。
是否可以重定向到尝试直接访问该端点的404页面用户?
谢谢。
答案 0 :(得分:1)
假设您已经为我的帐户部分(see this related answer)创建了一个自定义终结点,则可以使用template_redirect
钩子以以下简单方式将所有不允许的用户角色重定向到特定页面:>
add_action( 'template_redirect', 'custom_endpoint_redirection' );
function custom_endpoint_redirection() {
$allowed_user_role = 'administrator';
$custom_endpoint = 'my-custom-endpoint';
if ( is_wc_endpoint_url($custom_endpoint) && ! current_user_can($allowed_user_role) ) {
$redirection_url = home_url( '/404/' );
wp_redirect( $redirection_url );
exit;
}
}
您需要指定自定义端点,允许的用户角色和url重定向。
代码进入活动子主题(或活动主题)的functions.php文件中。可以。
相关:
答案 1 :(得分:0)
只需在活动主题的functions.php中添加以下代码段,这仅适用于administrator
用户角色,您可以根据自己的需要进行更改-
function add_custom_my_account_endpoint() {
add_rewrite_endpoint( 'shop_manager', EP_PAGES );
}
add_action( 'init', 'add_custom_my_account_endpoint' );
function add_custom_wc_menu_items( $items ) {
$user = wp_get_current_user();
if( $user && in_array( 'administrator', $user->roles ) ){
$items[ 'shop_manager' ] = __( 'Shop Manager', 'text-domain' );
}
return $items;
}
add_filter( 'woocommerce_account_menu_items', 'add_custom_wc_menu_items' );
function add_shop_manager_endpoint_content(){
$user = wp_get_current_user();
if( $user && !in_array( 'administrator', $user->roles ) ) return;
echo "Your content goes here";
}
add_action( 'woocommerce_account_shop_manager_endpoint', 'add_shop_manager_endpoint_content' );
在此之后,只需从后端设置>永久链接中flush_rewrite_rules
。就是这样。