Появляются изменения продукта на домашней странице woocommerce - PullRequest
0 голосов
/ 16 мая 2018

Я добавил следующий код в function.php моего заказа на сайте woocommerce, чтобы изменить название продукта переменной WooCommerce в зависимости от варианта, и я сделал страницу продукта домашней страницей. Но код работает только на странице продукта.показано на главной странице. Как я могу сделать так, чтобы эти изменения отображались на домашней странице?

add_filter( 'wp_footer','custom_product_title_script' );
function custom_product_title_script(){
global $post;

// Only single product pages
if( ! is_product() ) return;

// get an instance of the WC_Product Object
$product = wc_get_product($post->ID);

// Only for variable products
if( ! $product->is_type( 'variable' ) ) return;

// Here set your specific product attributes in this array (coma separated):
$attributes = array('pa_color');

// The 1st loop for variations IDs
foreach($product->get_visible_children( ) as $variation_id ) {

    // The 2nd loop for attribute(s)/value
    foreach($product->get_available_variation( $variation_id )['attributes'] as $key => $value_id ){
        $taxonomy = str_replace( 'attribute_', '', $key ); // Get the taxonomy of the product attribute

        // Just for defined attributes
        if( in_array( $taxonomy, $attributes) ){
            // Set and structure data in an array( variation ID => product attribute => term name )
            $data[ $variation_id ][$taxonomy] = get_term_by( 'slug', $value_id, $taxonomy )->name;
        }
    }
}

?>
    <script type="text/javascript">
        (function($){
            // variables initialization
            var variationsData = <?php echo json_encode($data); ?>,
                productTitle = $('.product_title').text(),
                color = 'pa_color';
            console.log(variationsData);

            // function that get the selected variation and change title
            function update_the_title( productTitle, variationsData, color ){
                $.each( variationsData, function( index, value ){
                    if( index == $('input.variation_id').val() ){
                        $('.product_title').text(productTitle+' - '+value[color]);
                        console.log('TITLE UPDATED');
                        return false;
                    } else {
                        $('.product_title').text(productTitle);
                    }
                });
            }

            // Once all loaded
            setTimeout(function(){
                update_the_title( productTitle, variationsData, color );
            }, 300);

            // On live event: select fields
            $('select').blur( function(){
                update_the_title( productTitle, variationsData, color );
            });
        })(jQuery);
    </script>
<?php

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...