Note: This document is only valid for the button automatically inserted by the configurator, not the shortcode.
Overriding the Configure button can be done using the filter mkl_pc_configure_button
Let’s change the original <button> to a <a> tag, with a custom label:
<?php
add_filter( 'mkl_pc_configure_button', 'mkl_my_custom_configure_button' );
function mkl_my_custom_configure_button( $original_button ) {
global $product;
// If the global product isn't defined, return the original value
if ( ! $product || ! is_a( $product, 'WC_Product' ) ) return $original_button;
// Set a custom label
$label = 'Customize this product';
$price = mkl_pc( 'frontend' )->product->get_product_price( get_the_id() );
// Let's change the tag to a link.
// The class configure-product-'. $product->get_type() is required for the button to work
$link = '<a href="#" class="configure-product configure-product-' . $product->get_type() . '"';
// The attribute data-price is required for simple products
$link .= ' data-price="' . esc_attr( $price ) . '"';
// Add the product_id to the button
$link .= ' data-product_id="' . get_the_id() . '">' . $label . '</a>';
// return the new button/linkl
return $link;
}
This will output something like this:
<a href="#" class="configure-product configure-product-simple" data-price="200" data-product_id="10">Customize this product</a>
If you wish to make this conditional, you can for example use custom fields, or target specific product IDs:
<?php
add_filter( 'mkl_pc_configure_button', 'mkl_my_custom_configure_button' );
function mkl_my_custom_configure_button( $original_button ) {
global $product;
// If the global product isn't defined, return the original value
if ( ! $product || ! is_a( $product, 'WC_Product' ) ) return $original_button;
// Check the meta 'change_button_only_on_this_product'
$condition = get_post_meta( get_the_id(), 'change_button_only_on_this_product', true );
// If that meta isn't set, return the original button.
if ( ! $condition ) return $original_button;
// The rest is as set previously:
// Set a custom label
$label = 'Customize this product';
$price = mkl_pc( 'frontend' )->product->get_product_price( get_the_id() );
// Let's change the tag to a link.
// The class configure-product-'. $product->get_type() is required for the button to work
$link = '<a href="#" class="configure-product configure-product-' . $product->get_type() . '"';
// The attribute data-price is required for simple products
$link .= ' data-price="' . esc_attr( $price ) . '"';
// Add the product_id to the button
$link .= ' data-product_id="' . get_the_id() . '">' . $label . '</a>';
// return the new button/linkl
return $link;
}