我可以多考虑一下。首先,我们需要为 Woo 通过 JSON 发送的变化数据提供一点额外的价值。我正在检查“黑色”颜色属性:
if( 'black' === strtolower($variation->get_attribute('color')) ){
但是你会想要改变以适应你的尺寸属性。
接下来,我将链接定义为
$kia_data['custom_link'] = sprintf( '<a href="google.com">%s</a>', __( 'Your Link', 'your-textdomain' ) );
这只是一个指向 google 的链接,因此您需要更改它。
接下来,我们添加一个空的<div> 占位符。最后,我们在可变产品上加载一些脚本并监听found_variation 事件。当我们得到它时,我们从 JSON 数据中得到 variation,我们可以检查我们之前定义的 custom_link 并将其转储到空持有人 <div>。
这可能很清楚,但这是完整的代码 sn-p:
/**
* Add data to json encoded variation form.
*
* @param array $data - this is the variation's json data
* @param object $product
* @param object $variation
* @return array
*/
function kia_available_variation( $data, $product, $variation ){
if( 'black' === strtolower($variation->get_attribute('color')) ){
$kia_data['custom_link'] = sprintf( '<a href="google.com">%s</a>', __( 'Your Link', 'your-textdomain' ) );
} else {
$kia_data['custom_link'] = false;
}
return array_merge( $data, $kia_data );
}
add_filter( 'woocommerce_available_variation', 'kia_available_variation', 10, 3 );
/**
* holder for display link
*/
function kia_custom_varition_link() {
echo '<div class="woocommerce-variation-link"></div>';
}
add_action( 'woocommerce_single_variation', 'kia_custom_varition_link', 5 );
/**
* Add scripts to variable products.
*/
function kia_on_found_template_for_variable_add_to_cart() {
add_action( 'wp_print_footer_scripts', 'kia_variable_footer_scripts' );
}
add_action( 'woocommerce_variable_add_to_cart', 'kia_on_found_template_for_variable_add_to_cart', 30 );
function kia_variable_footer_scripts() {
?>
<script type="text/javascript">
jQuery( document ).ready(function($) {
$('form.cart')
.on('found_variation', function( event, variation ) {
if ( variation.custom_link ) {
$link_html = variation.custom_link;
$(this).find( '.woocommerce-variation-link' ).html( $link_html ).show();
} else {
$(this).find( '.woocommerce-variation-link' ).html('').hide();
}
}).on('reset_variation', function( event, variation ) {
$(this).find( '.woocommerce-variation-link' ).html('').hide();
});
});
</script>
<?php
}
结果如下: