টেমপ্লেট পৃষ্ঠায় WooCommerce এ কাস্টম লুপের মাধ্যমে বৈশিষ্ট্যযুক্ত পণ্যগুলি প্রদর্শন করুন


19

আমি আমার হোম-পেজ.এফপি টেম্পলেটটিতে আমার ওয়ার্ক কমার্স স্টোর থেকে 6 টি বৈশিষ্ট্যযুক্ত পণ্য প্রদর্শন করতে চাই। কিছু গবেষণা করার পরে আমি দেখতে পেলাম যে এটি করার সঠিক উপায়টি একটি কাস্টম লুপের মাধ্যমে হয়েছিল, (আমি শর্টকডগুলি ব্যবহার করতে চাই না কারণ স্টাইলিংয়ের জন্য আমি অতিরিক্ত ক্লাস যুক্ত করতে চাই)) আমি আরও জানতে পেরেছিলাম যে উইককমার্স কীটি ব্যবহার করে বৈশিষ্ট্যযুক্ত পণ্যগুলি '_ ফিচারড'। আমি আমার স্টোরের বৈশিষ্ট্যযুক্ত পণ্য হিসাবে বেছে নেওয়া কোনও পণ্য প্রদর্শনের জন্য নীচের কোডটি একসাথে রেখেছি, তবে এটি কার্যকর হয় না ... কোনও সহায়তা প্রশংসিত হয়।

<?php

    $args = array(
        'post_type'   => 'product',
        'stock'       => 1,
        'showposts'   => 6,
        'orderby'     => 'date',
        'order'       => 'DESC' ,
        'meta_query'  => array(
            array(
                'key'     => '_featured',
                'value'   => 0,
                'compare' => '>',
                'type'    => 'numeric'
            )
        )
    );

    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>

        <li>    
            <?php 
                if ( has_post_thumbnail( $loop->post->ID ) ) 
                    echo get_the_post_thumbnail( $loop->post->ID, 'shop_catalog' ); 
                else 
                    echo '<img src="' . woocommerce_placeholder_img_src() . '" alt="Placeholder" width="65px" height="115px" />'; 
            ?>
            <h3><?php the_title(); ?></h3>

            <?php 
                echo $product->get_price_html(); 
                woocommerce_template_loop_add_to_cart( $loop->post, $product );
            ?>    
        </li>

<?php 
    endwhile;
    wp_reset_query(); 
?>

এই উত্তরে বর্ণিত কাস্টম ফাংশনটি var_dump( get_meta_values( '_featured', 'product' );যেখানে ফাংশনটি get_meta_valuesসমর্থন করে ফলাফলটি যুক্ত করুন
পিটার গুজন

উত্তর:


17

আপনার আরোগুলি এটির মতো করুন:

$meta_query   = WC()->query->get_meta_query();
$meta_query[] = array(
    'key'   => '_featured',
    'value' => 'yes'
);
$args = array(
    'post_type'   =>  'product',
    'stock'       =>  1,
    'showposts'   =>  6,
    'orderby'     =>  'date',
    'order'       =>  'DESC',
    'meta_query'  =>  $meta_query
);

আপনি ডাব্লুপি-কন্টেন্ট / প্লাগইনস / উইওকমার্স / অন্তর্ভুক্ত / শ্রেণি-ডাব্লুসি-শর্টকোডস.এফপি (@ 595) এ যান তবে ডাব্লুসি শর্টকোডগুলির জন্য এটি কীভাবে করা হয়েছে তা খুঁজে পেতে পারেন।


3
তাদের লক্ষণীয় মূল বিষয় হ'ল '_ ফিচার' একটি সংখ্যার মান হিসাবে সংরক্ষণ করা হয় না। এটি স্ট্রিং 'হ্যাঁ' বা 'না' হিসাবে সংরক্ষণ করা হয়। ওপি প্রশ্নের অন্যান্য সমস্ত কিছুর উচিত কাজ করা, আমার পক্ষে কাজ করা।
i_a

1
WooCommerce 3.0 হিসাবে, এই সমাধানটি আর কাজ করে না। নীচে আমার আপডেট উত্তর দেখুন।
dpruth

22

এটি WooCommerce 3.0 এ পরিবর্তিত হয়েছে। এটি কেবল একটি মেটা_কোয়ারি নয়, তবে এখন একটি ট্যাক্স_কোয়ারি রয়েছে। যুক্তিগুলি এখন:

    $meta_query  = WC()->query->get_meta_query();
    $tax_query   = WC()->query->get_tax_query();
    $tax_query[] = array(
        'taxonomy' => 'product_visibility',
        'field'    => 'name',
        'terms'    => 'featured',
        'operator' => 'IN',
    );

    $args = array(
        'post_type'           => 'product',
        'post_status'         => 'publish',
        'ignore_sticky_posts' => 1,
        'posts_per_page'      => $atts['per_page'],
        'orderby'             => $atts['orderby'],
        'order'               => $atts['order'],
        'meta_query'          => $meta_query,
        'tax_query'           => $tax_query,
    );

উইওকমার্স / অন্তর্ভুক্ত / শ্রেণি-ডাব্লুসি-শর্টকোডগুলি দেখুন ph


1
আমি কি খুঁজছিলাম!
joshkrz

এছাড়াও ওয়াহকমার্স 3.0 এর জন্য তারা wc_placeholder_img_srcপরিবর্তে ব্যবহার করার পরামর্শ দেয় woocommerce_placeholder_img_src
রোবটনিকিকা

6

WooCommerce 3 এ বৈশিষ্ট্যযুক্ত পণ্যগুলির লুপ

<ul class="products">
<?php
$args = array(
    'post_type' => 'product',
    'posts_per_page' => 12,
    'tax_query' => array(
            array(
                'taxonomy' => 'product_visibility',
                'field'    => 'name',
                'terms'    => 'featured',
            ),
        ),
    );
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
    while ( $loop->have_posts() ) : $loop->the_post();
        wc_get_template_part( 'content', 'product' );
    endwhile;
} else {
    echo __( 'No products found' );
}
wp_reset_postdata();
?>

5

WooCommerce উইকির মতে :

উন্নত পারফরম্যান্সের জন্য ডেটা কাস্টম টেবিলগুলির দিকে এগিয়ে যাওয়ার সাথে সাথে কাস্টম ডাব্লুপি_কিউয়ারিস বা ডাটাবেস প্রশ্নগুলি [পণ্যগুলি পুনরুদ্ধার করতে] তৈরি করা আপনার WooCommerce এর ভবিষ্যতের সংস্করণগুলিতে আপনার কোডটি ভেঙে ফেলবে

কমার্স ব্যবহার অত্যাবশ্যক wc_get_products()বা WC_Product_Query()পরিবর্তে WP_Query()বা get_posts()

আপনি এখানে যা চান তা অর্জন করতে আমি কোডটি দিয়ে একটি পোস্ট লিখেছি: https://cfxdesign.com/create-a-custom-woocommerce-product-loop-theright-way/


দুঃখিত, কিছু লিখিত কোড না দেখে আপনার নিবন্ধটি বোঝা শক্ত। আপনি কি কিছু কোডিং অন্তর্ভুক্ত করতে পারেন?
hoy

@ উচ্চ এম্বেড প্লাগইনটি ভেঙে গেছে; এটি এখন ঠিক করা হয়েছে এবং আপনি কোড দেখতে পারেন!
সিএফএক্স

আপনাকে ধন্যবাদ, সমাধানগুলি সন্ধান করার সময়, আমি নীচে এটি নিয়ে এসেছি। আমি নিশ্চিত না যে এটি আপনার থেকে কীভাবে আলাদা হয় কারণ আমি আপনার মাধ্যমে এটি পরীক্ষা করতে সক্ষম হইনি তবে এটি খুব স্বল্প এবং একটি কাস্টম পণ্য লুপে আমাকে সহায়তা করেছে। kathyisawesome.com/woocommerce-modifying-product-query
hoy

1

আমি জানি এটি বেশ পুরানো, তবে আমি এখানে একটি বিকল্প সমাধান ভাগ করে নিয়েছি এবং আমি মনে করি এটি এই বিষয়ে যারা পৌঁছেছে তাদেরও এটি সহায়তা করতে পারে।

meta_queryবা ব্যবহার করার পরিবর্তে tax_query, আপনি wc_get_featured_ product_ids ()ও ব্যবহার করতে পারেন :

$args = array(
    'post_type'           => 'product',
    'posts_per_page'      => 6,
    'orderby'             => 'date',
    'order'               => 'DESC',
    'post__in'            => wc_get_featured_product_ids(),
);

$query = new WP_Query( $args );

আমি আসা করি এটা সাহায্য করবে!


1

এর উপর ভিত্তি করে: https://github.com/woocommerce/woocommerce/wiki/wc_get_products- এবং- WC_Product_Query

আমি চেষ্টা করব:

বাইরের লুপ:

$args = array (
'limit' => 6,
'orderby' => 'title',
'order' => 'ASC',
'category' => $club_cat,
'stock_status' => 'instock',
'featured' => true,

 );

 $products = wc_get_products( $args );

লুপে:

$query = new WC_Product_Query( array(
'limit' => 6,
'orderby' => 'title',
'order' => 'ASC',
'category' => $club_cat,
'stock_status' => 'instock',
'featured' => true,
'return' => 'ids',

 ) );

 $products = $query->get_products();

0

যদি আপনি ডাটাবেসের মধ্যে কটাক্ষপাত wp_postmetaটেবিল আপনি দেখতে পাবেন meta_keyহতে হবে _featuredএবং meta_valueহতে হবে yesবা noমূল্যের তাই পরিবর্তে 0বা 1লেখার yesবাno

<?php
    $q = new WP_Query([
      'post_type'   =>  'product',
      'stock'       =>  1,
      'showposts'   =>  3,
      'orderby'     =>  'date',
      'order'       =>  'DESC',
      'meta_query'  =>  [ 
        ['key' => '_featured', 'value' => 'yes' ]
        ]
    ]);
    if ( $q->have_posts() ) :
        while ( $q->have_posts() ) : $q->the_post();
            // display product info
        endwhile; wp_reset_query();
    endif;
?>

0
<ul class="products">
    <?php
        $args = array(
            'post_type' => 'product',
            'posts_per_page' => 12,
            'tax_query' => array(
                    array(
                        'taxonomy' => 'product_visibility',
                        'field'    => 'name',
                        'terms'    => 'featured',
                    ),
                ),
            );
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();
               echo '<p>'.get_the_title().'</p>';
            endwhile;
        } else {
            echo __( 'No products found' );
        }
        wp_reset_postdata();
    ?>
</ul><!--/.products-->

দয়া করে আপনার উত্তর সম্পাদনা করুন , এবং একটি ব্যাখ্যা যুক্ত করুন: কেন এটি সমস্যার সমাধান করতে পারে?
ফুসিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.