প্রদত্ত বিভাগ আইডির পণ্য তালিকা পান


14

প্রদত্ত বিভাগ আইডি (বিভাগের নাম নয়) এর জন্য সমস্ত পণ্যের তালিকা পাওয়ার সঠিক উপায় আমি খুঁজে পাচ্ছি না।

বিভাগগুলির তালিকা পেতে আমি যে কোডটি ব্যবহার করছি তা নীচে রয়েছে, এটি দুর্দান্ত কাজ করে:

$args = array(
           'orderby'    => $orderby,
           'order'      => $order,
           'hide_empty' => 0,
           'include'    => $ids,
           'parent'    => 0,
     ); 

$categories = get_terms( 'product_cat', $args );

তবে, এখন প্রদত্ত বিভাগের আইডির জন্য (বলুন 47), আমি এর সম্পর্কিত পণ্যগুলি পাওয়ার উপায় খুঁজে পাইনি। আমি নিম্নলিখিত পদ্ধতিতে চেষ্টা করেছি:

$args = array( 
    'posts_per_page' => 5,
    'offset'=> 1,
    'category' => 47
 );

$products = get_posts( $args );
echo var_dump($products);

$productsঅ্যারে রিটার্ন ডিবাগিং সর্বদা 0 যা আইডি 47 সহ বিভাগের অধীনে কিছু পণ্য রয়েছে বলে ভুল তা আমি বুঝতে পারি যে কীভাবে আমার কোড ঠিক করবেন?


1
categoryবা product_category?
ফুসিয়া

উত্তর:


19

আমি সন্দেহ করি যে প্রধান সমস্যাটি হ'ল আপনার উচিত WP_Queryবরং এটি ব্যবহার করা get_posts()। পরবর্তীতে ডিফল্টরূপে কেবল postপণ্য নয় পোস্ট পোস্ট টাইপের সাথে আইটেমগুলি ফেরত দেয় ,

সুতরাং 26 আইডি সহ একটি বিভাগ দেওয়া হয়েছে, নিম্নলিখিত কোডটি তার পণ্যগুলি (WooCommerce 3+) ফিরিয়ে দেবে:

    $args = array(
    'post_type'             => 'product',
    'post_status'           => 'publish',
    'ignore_sticky_posts'   => 1,
    'posts_per_page'        => '12',
    'tax_query'             => array(
        array(
            'taxonomy'      => 'product_cat',
            'field' => 'term_id', //This is optional, as it defaults to 'term_id'
            'terms'         => 26,
            'operator'      => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
        ),
        array(
            'taxonomy'      => 'product_visibility',
            'field'         => 'slug',
            'terms'         => 'exclude-from-catalog', // Possibly 'exclude-from-search' too
            'operator'      => 'NOT IN'
        )
    )
);
$products = new WP_Query($args);
var_dump($products);

WooCommerce এর পূর্ববর্তী সংস্করণগুলিতে দৃশ্যমানতা একটি মেটা ক্ষেত্র হিসাবে সঞ্চিত ছিল, সুতরাং কোডটি হবে:

    $args = array(
    'post_type'             => 'product',
    'post_status'           => 'publish',
    'ignore_sticky_posts'   => 1,
    'posts_per_page'        => '12',
    'meta_query'            => array(
        array(
            'key'           => '_visibility',
            'value'         => array('catalog', 'visible'),
            'compare'       => 'IN'
        )
    ),
    'tax_query'             => array(
        array(
            'taxonomy'      => 'product_cat',
            'field' => 'term_id', //This is optional, as it defaults to 'term_id'
            'terms'         => 26,
            'operator'      => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
        )
    )
);
$products = new WP_Query($args);
var_dump($products);

এখানে আমরা কেবল প্রতি পৃষ্ঠায় দৃশ্যমান পণ্যগুলি ফিরিয়ে দিচ্ছি 12

বিভাগটি কীভাবে লক্ষ্যবস্তু কাজ করে সে সম্পর্কে আরও তথ্যের জন্য http://codex.wordpress.org/Class_References/WP_Query# ট্যাক্সোনমি_প্যারামিটারগুলির মাধ্যমে দেখুন - এটি প্রায়শই আইডি দ্বারা স্লাগ দ্বারা পুনরুদ্ধার করা আরও কার্যকর!


সমাধান কাজ করেছে। সুন্দর ব্যাখ্যা।
কামেশ জঙ্গি

1
উইওকমার্স 3 অনুসারে দৃশ্যমানতাটি মেটার পরিবর্তে করযোগ্যতায় পরিবর্তিত হয়েছে সুতরাং আপনাকে মেটা_কোয়ারিকে কর_কোয়রিতে পরিবর্তন করতে হবে। ওয়ার্ডপ্রেস.সটাকেক্সচেঞ্জ / এ / ২6262২২২৮ / 3537৩৫৫ দেখুন ।
জার্নোয়ান

সম্পর্কে আপনার উপসংহারটি get_posts()ভুল। আপনি আপনার কোডটি new WP_Query($args)দিয়ে প্রতিস্থাপন করতে পারেন get_posts($args)এবং এটি কার্যকর হবে।
বিয়ন্সের

3
$products = wc_get_products(array(
    'category' => array('your-category-slug'),
));

ওপি বিশেষত একটি বিভাগ আইডি ব্যবহার করে পণ্য পাওয়ার জন্য বলেছিল, তবে এটি আমাকে সহায়তা করেছে, তাই আমি যে কোনও উপায়েই উন্নীত করব। কেবল সচেতন থাকুন এটি আসল প্রশ্নের উত্তর দেয় না
dKen

2

আইডি বা নাম বা স্লাগ দ্বারা বিভাগটি (বিভাগ-স্লাগ-নাম) পরিবর্তন করুন

<?php

$args = array( 'post_type' => 'product', 'stock' => 1, 'posts_per_page' => 2,'product_cat' => 'category-slug-name', 'orderby' =>'date','order' => 'ASC' );
  $loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product; 
?>
Within loop we can fetch Product image, title, description, price etc. 

<?phpendwhile;wp_reset_query(); ?>

2

কিছুটা দেরি করে তবে বিষয়গুলি স্পষ্ট করে বলতে এবং একটি পরিষ্কার উত্তর দিতে চাই like : ব্যবহারকারী @ benz001 একটি সম্ভাব্য বৈধ উত্তর দিয়েছেন, কিন্তু বলেন কিছু ভুল get_postsআয় পোস্ট ধরনের কোন ধরনের, নির্ধারিত লিঙ্ক posts, পোস্ট-টাইপ ঠিক WP_Query। দুজনের মধ্যে আসল পার্থক্যগুলি এখানে আশ্চর্যজনকভাবে ব্যাখ্যা করা হয়েছে ।

আসল বিষয়টি হ'ল, ওপিতে $argsঅ্যারেটির মধ্যে কিছু পরামিতি অনুপস্থিত ছিল :

  • পোস্ট-টাইপের সংজ্ঞা তিনি অনুসন্ধান করছেন:

        'post_type'             => 'product',
  • এবং অনুসন্ধান ক্যোয়ারীর "ট্যাক্সনোমি অংশ" এর পরিবর্তন:

        'tax_query' => array(
            array(
                'taxonomy' => 'product_cat',
                'terms' => 26,
                'operator' => 'IN',
            )
        )

এইভাবে আপনার পরবর্তী লাইন

$products = new WP_Query($args);
var_dump($products);

আপনাকে প্রয়োজনীয় পণ্যগুলি দেখিয়ে দেবে :)

@ বেনজ001 দ্বারা দেখানো অন্যান্য সমস্ত অতিরিক্ত প্যারামিটার অবশ্যই বৈধ তবে ওপি দ্বারা অনুরোধ করা হয়নি, তাই আমি এই উত্তরে এগুলি পিছনে রেখে যাওয়ার সিদ্ধান্ত নিয়েছি।

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