1

I am trying to get this code:

public function add_request_quote_btn() {
    global $product;
    $product_id = $product->get_id();
    $wc_quote_show_button = get_option('wc_quote_show_button');
    $enable_btn = 'no';
    if($wc_quote_show_button == 'all' || $wc_quote_show_button == '')
        $enable_btn = 'yes';
    elseif($wc_quote_show_button == 'out_stock' && !$product->is_in_stock())
        $enable_btn = 'yes';
    elseif($wc_quote_show_button == 'guest_users' && !is_user_logged_in())
        $enable_btn = 'yes';
    elseif($wc_quote_show_button == 'logged_in_users' && is_user_logged_in())
        $enable_btn = 'yes';
    elseif($wc_quote_show_button == 'specific_products'){
        $wc_quote_products = get_option('wc_quote_products');
        if(!empty($wc_quote_products) && in_array($product_id, $wc_quote_products))
            $enable_btn = 'yes';
    }
        
    
    if($enable_btn == 'yes')
    {
        
        $wc_quote_button_text = get_option('wc_quote_button_text');
        if($wc_quote_button_text == '')
            $wc_quote_button_text = __('Request Quote', 'woocommerce');
        
        echo "<button class="open-wc-quote-form single_add_to_cart_button button alt" data-product="'.$product_id.'">'.$wc_quote_button_text.'</button>";
    }

into a shortcode so i can put this button wjere i need it. Everything i try throws errors or 417 failed expectation.

Could someone help me out?

Thanks Wayne

1
  • You need to add the actual code you're using to setup the shortcode and the actual text of the error to your question
    – mozboz
    Commented Aug 11, 2020 at 19:40

1 Answer 1

-1

I stripped out a lot of the code that wouldn't be needed in a shortcode:

function sx372821_request_quote_button( $atts = array() ) {
    global $product;

    $atts = shortcode_atts( array(
        'button_text'   => get_option( 'wc_quote_button_text' ),
    ), $atts, 'request_quote_button' );

    $product_id = $product->get_id();

    $wc_quote_button_text = esc_html( $atts['button_text'] );

    if ( empty( $wc_quote_button_text ) ) {
        $wc_quote_button_text = esc_html__( 'Request Quote', 'woocommerce' );
    }

    return "<button class=\"open-wc-quote-form single_add_to_cart_button button alt\" data-product=\"{$product_id}\">{$wc_quote_button_text}</button>";
}

add_shortcode( 'request_quote_button', 'sx372821_request_quote_button' );

Now you can do:

[request_quote_button]

or specify the button text if you want to override the default:

[request_quote_button button_text="Get a Quote"]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.