我需要在正文中添加不同的会员计划类别

问题描述 投票:0回答:1

我需要添加 CSS Body Differents 会员 ID,我有此代码,但它仅适用于第一个会员计划(高级),白金和专业版不起作用。这段代码有问题吗?

add_filter( 'body_class', 'am_add_slug_body_class' );

function am_add_slug_body_class( $classes ) {
    global $post;
    if ( isset( $post ) ) {
        $classes[] = $post->post_type . '-' . $post->post_name;
    }
    return $classes;
}

/* Add Logged-Out Body Class */

add_filter('body_class','am_logged_in_filter');

function am_logged_in_filter($classes) {
    if( is_user_logged_in() ) {
        $classes[] = '';
    } else {
        $classes[] = 'logged-out';
    }
    return $classes;
}

/* Add Gold Membership to Body Class */

add_filter('body_class','am_membership_class_filter');

function am_membership_class_filter($classes) {
    if( wc_memberships_is_user_member( null, 'prime' ) ) {
        $classes[] = 'prime';
    }
    
    return $classes;

if( wc_memberships_is_user_member( null, 'platinum' ) ) {
        $classes[] = 'platinum';
    }
    return $classes;

if( wc_memberships_is_user_member( null, 'pro' ) ) {
        $classes[] = 'pro';
    }
    return $classes;

}

我需要有人知道为什么代码不能正常工作

php css wordpress woocommerce woocommerce-memberships
1个回答
0
投票

在最后一个函数中,您在第一个 if 语句之后使用

return $classes;
,之后的代码永远不会执行或读取。

此外,由于您对 3 个函数使用相同的钩子,因此您可以将所有内容合并到一个独特的函数中。

尝试使用以下替换代码代替:

add_filter('body_class','add_custom_body_class');
function add_custom_body_class($classes) {
    global $post;

    if ( isset( $post ) ) {
        $classes[] = $post->post_type . '-' . $post->post_name;
    }

    if( ! is_user_logged_in() ) {
        $classes[] = 'logged-out';
    }

    foreach( ['prime', 'prime', 'prime'] as $value ) {
        if( wc_memberships_is_user_member( null, $value ) ) {
            $classes[] = $value;
        }
    }

    return $classes;
}

现在应该可以工作了。

© www.soinside.com 2019 - 2024. All rights reserved.