为了账号安全,请及时绑定邮箱和手机立即绑定

替换 WooCommerce 中未登录用户的“添加到购物车”按钮

替换 WooCommerce 中未登录用户的“添加到购物车”按钮

PHP
繁华开满天机 2023-08-26 10:19:10
在 WooCommerce 中,我不想为未登录的用户显示产品“添加到购物车”按钮。我正在使用下面的代码更改“添加到购物车”按钮:// Replace add to cart button with link for users who aren't logged inadd_filter( 'woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart_button', 10, 2 );function replace_loop_add_to_cart_button( $button, $product  ) {    // Logged in users see add to cart button    if( is_user_logged_in() ) return;    $button_text = __( "Sign up for pricing", "woocommerce" );    $button = '<div><a class="button" href="https://example.com/link">' . $button_text . '</a></div>';    return $button;}它适用于除单个产品页面之外的所有页面。产品页面继续显示默认的“添加到购物车”按钮。我缺少什么?
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

更新:将单个产品上的按钮链接添加到我的帐户登录 URL


以下将以更好的方式完成您想要的一切(替换您的代码):


// Replacing the button add to cart by a link to the product page in Shop and archives pages

add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart_button', 10, 2 );

function replace_loop_add_to_cart_button( $button, $product  ) {

    // Only for unlogged user

    if( ! is_user_logged_in() ){

        $button_text = __( "Sign up for pricing", "woocommerce" );

        // $button_link = get_permalink( wc_get_page_id( 'myaccount' ) ); // Login Url

        $button_link = $product->get_permalink(); // Single product Url

        $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';

    }


    return $button;

}


// Replacing the single product button add to cart by a custom button

add_action( 'woocommerce_single_product_summary', 'disabled_single_add_to_cart_button', 1 );

function disabled_single_add_to_cart_button() {

    global $product;


    // Only for unlogged user

    if( ! is_user_logged_in() ){


        // For variable product types (keeping attribute select fields)

        if( $product->is_type( 'variable' ) ) {

            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );

            add_action( 'woocommerce_single_variation', 'custom_product_button', 20 );

        }

        // For all other product types

        else {

            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

            add_action( 'woocommerce_single_product_summary', 'custom_product_button', 30 );

        }

    }

}


// The custom replacement button function inked to loggin page

function custom_product_button(){

    $login_url = get_permalink( wc_get_page_id( 'myaccount' ) );

    echo '<a class="button" href="'.$login_url.'">' . __( "Sign up for pricing", "woocommerce" ) . '</a>';

}

代码位于活动子主题(活动主题)的functions.php 文件中。经过测试并有效。


要在单个产品页面上禁用按钮,请改用:


// The custom replacement button function with a disabled button

function custom_product_button(){

    echo '<a class="button disabled">' . __( "Sign up for pricing", "woocommerce" ) . '</a>';

}

要隐藏商店和存档页面上的价格:


add_filter( 'woocommerce_after_shop_loop_item_title', 'remove_woocommerce_loop_price', 2 );

function remove_woocommerce_loop_price() {

    // Only for unlogged user

    if( ! is_user_logged_in() )

        remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );

}

要从单个产品页面中删除产品价格:


add_filter( 'woocommerce_single_product_summary', 'remove_woocommerce_single_price', 2 );

function remove_woocommerce_single_price() {

    // Only for unlogged user

    if( ! is_user_logged_in() )

        remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

}



// Hide variations price for variable products

add_filter( 'woocommerce_available_variation', 'hide_variations_price_html', 10, 3) ;

function hide_variations_price_html( $data, $product, $variation ) {

    // Only for unlogged user

    if( ! is_user_logged_in() )

        $data['price_html'] = ' ';


    return $data;

}

代码位于活动子主题(活动主题)的functions.php 文件中。经过测试并有效。


查看完整回答
反对 回复 2023-08-26
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信