如何将菜单项及其内容限制为 Woocommerce 中的已登录用户

How to restrict a menu item and it's content to logged users in Woocommerce

在 WordPress 上,我正在使用 Woocommerce 插件设置我的在线商店。我有一个生成定价 table 的 PHP 脚本。

但是其实大家都能看出来。

我如何将它添加到我的 WordPress 菜单并且 none 可以在不登录的情况下看到它?

在您的脚本中,您将在 IF 语句中添加 is_user_logged_in(),例如:

function my_php_script_table(){
    if( is_user_logged_in() ) {
        // The function code
    } else {
        return; // Exit
    }
} 

现在在您的 Wordpress 菜单中,您可以添加额外的 CSS classes 在 "Screen options" 选项卡位于 "Menus" 设置页面的右上方。

然后一旦启用,您就可以在您的菜单项中设置自定义 CSS class:

然后您将能够使用 对未登录的用户隐藏此菜单项(这里附加的 class 是 hide_if_non_logged:

add_action( 'wp_head', 'hide_if_non_logged_custom_inline_css', 500 );
function hide_if_non_logged_custom_inline_css() {
    if( ! is_user_logged_in() ) {
        ?><style>li.hide_if_non_logged { display: none !important;}</style><?php
    }
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。


您甚至可以在用户未登录时为要对未登录用户隐藏内容的页面添加重定向 (您需要在代码):

add_action( 'template_redirect', 'custom_unlogged_user_redirection' );
function custom_unlogged_user_redirection() {
    // Below set your correct page slug
    if ( ! is_user_logged_in() && is_page( 'pricing-table' ) ){
        // Redirect to logout URL
        wp_safe_redirect( get_home_url() );
        exit(); // Always exit
    }
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。