meta_query 'তুলনা' => 'IN' কাজ করছে না


14

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

আমি পোস্টের মাধ্যমে অনুসন্ধান করছি post_meta। এখানে আমার কোড, যা বর্তমানে কিছুই দেয় না।

$args   =   array(
    'numberposts'   => -1,
    'post_type'     => 'post',
    'meta_query'    => array(
        array(
            'key'       => 'system_power_supply',
            'value'     => array('single', 'redundant'),
            'compare'   => 'IN',
        )
    )

);

$query = new WP_Query($args);
echo $query->found_posts;

আমি মুছে ফেললে meta_queryএটি কাজ করে। আমি এই জিনিস সম্পর্কে নিশ্চিত:

  • keyবা এর মধ্যে কোনও বানান ভুল নেই value
  • পোস্ট টাইপ হয় post
  • সেখানে হয় 'system_power_supply' থেকে মান 'একক' সাথে একটি পোস্ট। তবে পোস্ট ক্ষেত্রগুলি অ্যাডভান্সড কাস্টম ক্ষেত্রগুলি দ্বারা উত্পাদিত হয় ।

হয় system_power_supplyধারাবাহিকভাবে?
হাওডি_এমসিজি

হ্যাঁ, এটা পোস্টমেটা টেবিলের মান এখানে a:1:{i:0;s:6:"single";}
রিজওয়ান

2
ভাল এটি আপনার সমস্যা, মেটা ক্যোয়ারী সিরিয়ালযুক্ত ডেটাতে কাজ করবে না। আপনি যদি সিরিয়ালযুক্ত ডেটা অনুসন্ধানের জন্য এই সাইটটি অনুসন্ধান করেন তবে কিছু উত্তর পাবেন তবে কোনও পদ্ধতিই আদর্শ হবে না।
মিলো

উত্তর:


13

কোনও মেটা ক্যোয়ারিতে ক্রমিক মানগুলি অনুসন্ধান করার সহজ উপায় নেই। মানগুলির তালিকাটি যদি দীর্ঘ দীর্ঘ না হয়, তবে আপনি একাধিক মেটা ক্যোয়ারী সেট আপ করতে পারেন:

'meta_query'    => array(
    'relation' => 'OR',
    array(
        'key'       => 'system_power_supply',
        'value'     => 'single',
        'compare'   => 'LIKE',
    ),
    array(
        'key'       => 'system_power_supply',
        'value'     => 'redundant',
        'compare'   => 'LIKE',
    )
)

বা আপনি যদি সুপার অভিনব হতে চান, আপনি এটি গতিশীল সেট আপ করতে পারে:

$values_to_search = array('single', 'redundant');
$meta_query = array('relation' => 'OR');
foreach ($values_to_search as $value) {
    $meta_query[] = array(
        'key'       => 'system_power_supply',
        'value'     => $value,
        'compare'   => 'LIKE',
    );
}

আপনাকে অনেক ধন্যবাদ ভাই। আপনি কতটা বড় মাথা ব্যাথার সমাধান করেছেন তা আমি আপনাকে বলতে পারি না।
রিজওয়ান

বিটিডব্লিউ, কেন আমরা মেটা_কোয়ারির মাধ্যমে জিজ্ঞাসা করতে সক্ষম না হলে সিরিয়ালযুক্ত ডেটাযুক্ত মেটা_ভ্যালু? এই ওয়ার্ডপ্রেস বাগ কি?
রিজওয়ান

1
আমি একজন মহিলা, "ব্রো" নই, তবে কোনও সমস্যা নেই। উন্নত কাস্টম ক্ষেত্রগুলি ডেটা সংরক্ষণ করার কারণে মেটা_ভ্যালুতে সিরিয়ালযুক্ত ডেটা রয়েছে। এটি অবশ্যই আদর্শ নয়।
জেন

1
হাহাহা, আমি আমার মহিলার কাছে ক্ষমা চাইছি। দ্বিতীয় এবং তৃতীয়টি ভাল কাজ করেছে, প্রথমটির চেষ্টা করে নি।
রিজওয়ান

2
আপনি প্রথমটিকে সরাতে পারেন, এটি কার্যকর হয় না
তোসকান

4

আমি জানি এটি অনেক দিন হয়ে গেছে, তবে কারও ক্ষেত্রে একই সমস্যা রয়েছে। সমস্যাটি আবিষ্কার করার আগে আমি কয়েক ঘন্টা ধরে আমার চুল টানছি: 'মেটা_কোয়ারি' 'আইএন' তুলনা অপারেটরের সাথে স্বাভাবিক অ্যারে গ্রহণ করা মনে হয় না। পরিবর্তে, আপনাকে প্রথমে এটি ',' এর সাথে যোগদান করতে হবে।

সুতরাং, আপনার ক্ষেত্রে, এর মতো কিছু কাজ করা উচিত:

$args   =   array(
'posts_per_page'   => -1,
'post_type'     => 'post',
'meta_query'    => array(
    array(
        'key'       => 'system_power_supply',
        'value'     => join(', ', array('single', 'redundant')),
        'compare'   => 'IN',
    )
)
);
$query = new WP_Query($args);
echo $query->found_posts;

ডাব্লুপি 5 এ আপনি কেবল অ্যারের সাথে সরাসরি মান কীতে পাস করতে পারেন। আপনি যদি এটি একটি স্ট্রিংয়ে প্রবাহিত করেন তবে ডাব্লুপিপি কীভাবে IN()অংশটির অংশগুলিতে বিভক্ত করে সে সম্পর্কে আপনি অপ্রত্যাশিত ফলাফল পেতে পারেন । যেমন, 'this that', 'and', 'that'হয়ে যায় 'this','that','and','that'- তাই এটিকে অ্যারে দেওয়া ভাল বলে মনে হয়।
কলা অ্যাপল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.