繁体   English   中英

仅针对特定用户角色在 Woocommerce 中自定义我的帐户端点

[英]Custom my account endpoint in Woocommerce just for a specific user role

按照 woocommerce 文档,我在 woocommerce 的我的帐户页面中添加了一个端点。

我想让这个端点只对特定的用户角色可见,比如 shop_manager。

有没有办法重定向到尝试直接访问该端点的 404 页面用户?

提前致谢。

假设您已经为我的帐户部分创建了一个自定义端点( 请参阅此相关答案),您可以使用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 文件中。 它可以工作。


有关的:

只需在活动主题的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 就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM