Кастомной шорткод woocommerce /

Делаем свой шорткод для отбора товаров по кастомным полям acf

09 / 07 / 2019 199 woocommerce Aвтор: Фрилансер
Кастомной шорткод woocommerce

 Woocommerce — отличный плагин для интернет-магазина. Но и в нем есть мелкие недочеты. Но они легко устраняются руками)

Сделаем свой шорткод для отбора товаров по кастомным полям Advanced Custom Fields.

Например сделаем поле «что товар »  особенный.

 

Пример шорткода 

[hit_category_product  per_page="4" columns="4" orderby="date" order="desc"]

Функцию добавить в functions.php

add_shortcode( 'hit_category_product', 'featured_category_product_function' );
function featured_category_product_function( $atts ) {

    global $woocommerce_loop;

    extract(shortcode_atts(array(
        'category'      => '',
        'per_page'  => '4',
        'columns'   => '4',
        'orderby' => 'date',
        'order' => 'desc'
    ), $atts));

     $args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'ignore_sticky_posts' => 1,
        'posts_per_page' => $per_page,
        'orderby' => 'meta_value_num',
        'order' => $order,
        'meta_query' => array(            
            array(
                'key' => 'hit_product', // hit_product - имя кастомного поля 
                'value' => true,
                'compare' => 'IN'
            )
        )
    );

    ob_start();

    $products = new WP_Query( $args );

    $woocommerce_loop['columns'] = $columns;

    if ( $products->have_posts() ) : ?>     

        <?php woocommerce_product_loop_start(); ?>

            <?php while ( $products->have_posts() ) : $products->the_post(); ?>

                <?php woocommerce_get_template_part( 'content', 'product' ); ?>

            <?php endwhile; // end of the loop. ?>

        <?php woocommerce_product_loop_end(); ?>

    <?php endif;

    wp_reset_postdata();

    return '<div class="woocommerce">' . ob_get_clean() . '</div>';
}

Если нужно отбирать по двум полям 

$args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'ignore_sticky_posts' => 1,
        'posts_per_page' => $per_page,
        'orderby' => 'meta_value_num',
        'order' => $order,
        'meta_query' => array(
            'relation' => 'OR', // указываем что нужно искать или первое или другое 
            array(
                'key' => 'hit_product',// первое кастомное поле
                'value' => true,
                'compare' => 'IN'
            ),array(
                'key' => 'Selling',// второе кастомное поле
                'value' => true,
                'compare' => 'IN'
            )
        )
    );

 

3 случайных Поста

Card image cap
Как передать в Google сведения о контенте, разбитом на страницы wordpress
Card image cap
Кастомной шорткод woocommerce
Card image cap
Telsender bot telegram

коммент.

© SiteBlog designer