Woocommerce Widget Custom Цена с тысячным разделителем и десятичным разделителем - PullRequest
0 голосов
/ 17 января 2020

Я использую шаблон, в котором есть виджет для отображения продукта woocommetce на домашней странице. В настоящее время цена продукта - это просто число, например 18500 фунтов стерлингов / без десятичных или запятых, я хочу показать цену с разделителем тысяч и десятичным разделителем. разделитель Например, 18 500 / -

Примечание. Разделитель тысяч и разделитель десятичных дробей включены в настройках woocommerce, и здесь я хочу показать цену на виджете. Я прилагаю код виджета.

любая помощь будет оценена.

             * Filter the arguments for the Recent Posts widget.
             *
             * @since 1.0.0
             *
             * @see WP_Query
             *
             */
            $query_args = array(
                'posts_per_page' => $post_number,
                'post_status'    => 'publish',
                'post_type'      => 'product',
                'no_found_rows'  => 1,
                'order'          => $order,
                'meta_query'     => array(),
                'tax_query'      => array(
                    'relation' => 'AND',
                ),
            );

            switch ( $wc_advanced_option ) {

                case 'featured' :
                    if( !empty( $product_visibility_term_ids['featured'] )){
                        $query_args['tax_query'][] = array(
                            'taxonomy' => 'product_visibility',
                            'field'    => 'term_taxonomy_id',
                            'terms'    => $product_visibility_term_ids['featured'],
                        );
                    }

                    break;

                case 'onsale' :
                    $product_ids_on_sale    = wc_get_product_ids_on_sale();
                    if( !empty( $product_ids_on_sale ) ){
                        $query_args['post__in'] = $product_ids_on_sale;
                    }
                    break;

                case 'cat' :
                    if( !empty( $travel_way_wc_product_cat )){
                        $query_args['tax_query'][] = array(
                            'taxonomy' => 'product_cat',
                            'field'    => 'term_id',
                            'terms'    => $travel_way_wc_product_cat,
                        );
                    }

                    break;

                case 'tag' :
                    if( !empty( $travel_way_wc_product_tag )){
                        $query_args['tax_query'][] = array(
                            'taxonomy' => 'product_tag',
                            'field'    => 'term_id',
                            'terms'    => $travel_way_wc_product_tag,
                        );
                    }

                    break;
            }

            switch ( $orderby ) {

                case 'price' :
                    $query_args['meta_key'] = '_price';
                    $query_args['orderby']  = 'meta_value_num';
                    break;

                case 'sales' :
                    $query_args['meta_key'] = 'total_sales';
                    $query_args['orderby']  = 'meta_value_num';
                    break;

                case 'ID' :
                case 'author' :
                case 'title' :
                case 'date' :
                case 'modified' :
                case 'rand' :
                case 'comment_count' :
                case 'menu_order' :
                    $query_args['orderby']  = $orderby;
                    break;

                default :
                    $query_args['orderby']  = 'date';
            }

            $travel_way_featured_query = new WP_Query( $query_args );
            if ($travel_way_featured_query->have_posts()) :
                echo $args['before_widget'];

                $animation = "init-animate zoomIn";
                ?>
                <section id="<?php echo esc_attr( $unique_id ); ?>" class="at-widgets acme-abouts <?php echo $bg_gray_class;?>">
                    <div class="container">
                        <?php
                        if ( ! empty( $title ) ) {
                            echo $args['before_title'] . esc_html( $title ) . $args['after_title'];
                        }
                        $div_attr = 'class="featured-entries-col woocommerce"';
                        ?>
                        <div class="row at-cat-product-wrap clearfix ">
                            <div <?php echo $div_attr;?>>
                                <?php
                                $travel_way_featured_index = 1;
                                while ( $travel_way_featured_query->have_posts() ) :$travel_way_featured_query->the_post();
                                    $travel_way_list_classes = 'single-list';

                                    if ( 1 == $column_number ) {
                                        $travel_way_list_classes .= " col-sm-12";
                                    } elseif ( 2 == $column_number ) {
                                        $travel_way_list_classes .= " col-sm-6";
                                    } elseif ( 3 == $column_number ) {
                                        $travel_way_list_classes .= " col-sm-4 col-md-4";
                                    } else {
                                        $travel_way_list_classes .= " col-sm-4 col-md-3";
                                    }

                                    ?>
                                    <div class="<?php echo esc_attr( $travel_way_list_classes ); ?>">
                                       <a href="<?php the_permalink();?>">
                                        <?php the_post_thumbnail($travel_way_img_size)?>
                                        <div class="caption">
                                       <h3 class="at-woo-title"><?php the_title();?></h3>

                                        <?php                                        
                                        woocommerce_template_loop_rating();
                                        $currency = get_woocommerce_currency_symbol();
                                        $price = get_post_meta( get_the_ID(), '_regular_price', true);
                                        $sale = get_post_meta( get_the_ID(), '_sale_price', true);

                                        if($sale) :
                                            global $post, $product;
                                            echo apply_filters( 'woocommerce_sale_flash', '<span class="onsale">' . esc_html__( 'Sale!', 'travel-way' ) . '</span>', $post, $product );
                                            ?>
                                        <p class="product-price">
                                            <del>
                                                <?php
                                                echo esc_html($currency);
                                                echo esc_html( $price );
                                                ?>
                                            </del>
                                            <?php
                                            echo esc_html($currency);
                                            echo esc_html( $sale . '/-' );
                                            ?>
                                        </p>    
                                        <?php elseif($price) : ?>
                                            <p class="product-price">
                                                <?php
                                                echo esc_html($currency);
                                                echo esc_html( $price . '/-');
                                                ?>
                                            </p>
                                        <?php endif; 
                                         ?> 
                                     </div>
                                   </a>
                                    </div><!--dynamic css-->
                                    <?php
                                    $travel_way_featured_index++;
                                endwhile;
                                ?>
                            </div><!--featured entries-col-->
                        </div><!--cat product wrap-->
                    <?php
                    echo $args['after_widget'];
                    echo "<div class='clearfix'></div>";
                    // Reset the global $the_post as this query will have stomped on it
                    ?>
                    </div>
                </section>
            <?php
            endif;
            wp_reset_postdata();
        }
    } // Class Travel_Way_Wc_Products ends here
} ```

1 Ответ

0 голосов
/ 17 января 2020

Вы можете использовать число_формат . Должно быть что-то вроде:

$price = floatval($price);
$decimal_separator  = wc_get_price_decimal_separator();
$thousand_separator = wc_get_price_thousand_separator();
$decimals           = wc_get_price_decimals();
$formatted_price = number_format( $price, $decimals, $decimal_separator, $thousand_separator );
echo esc_html( $formatted_price . '/-');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...