মেটা_ভ্যালু খালি না থাকলে আমি কীভাবে পোস্টগুলি দেখাব


36

তিন জন ইতিমধ্যে এটি সমাধান করার চেষ্টা করেছে এবং আমরা এগিয়ে আসছি। আমি কেবল পোস্টগুলিই দেখাতে চাই যে মেটা_কি 'বৈশিষ্ট্যযুক্ত_মাংসে' এর একটি মান রয়েছে।

সুতরাং ... যদি 'বৈশিষ্ট্যযুক্ত_মাখা' খালি না থাকে তবে পোস্টটি দেখান। কোডটি এখানে:

      <ul>
      <?php
      $args = array(
        'showposts' => 5,
        'meta_query' => array(
          array(
            'key' => 'featured_image',
            'value' => '',
            'compare' => '!='
            )
          )
      );
      $ft_pagination = new WP_Query( $args );
      ?>
      <?php while ($ft_pagination->have_posts()) : $ft_pagination->the_post(); ?>
        <?php $ftimage = get_post_meta(get_the_id(), 'featured_image', TRUE); ?>
        <li>
          <article>
            <a href="">
            <?php if ($ftimage): ?>
              <img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo $ftimage; ?>&w=84&h=60" alt="" />
            <?php else: ?>
              <img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=/wp-content/themes/ssv/images/review-default.gif&w=84&h=60" alt="" />
            <?php endif; ?>
            </a>
          </article>
        </li>
      <?php
      endwhile;

      wp_reset_query();
      ?>
      </ul>

আমরা ভাবতে পারি যে আক্ষরিক অর্থে প্রতিটি সম্মিলন চেষ্টা করেছি, অবহিত মেটা_ * বিকল্পগুলি, ক্যোয়ারী_পোস্টগুলি, গেট_পোস্টগুলি, পরিবর্তে ডাব্লুপিউকিউয়ের ... কিছুই নয়। নির্বাচিত বিবৃতি মুদ্রিত, কোনও মেটা মান ক্ষেত্র প্রদর্শিত হচ্ছে না। এটি বিদ্যমান - পোস্টগুলির জন্য (প্রতিটি পোস্টের জন্য) এবং এটি ডিবিতে বিদ্যমান।

আমরা এই মুহূর্তে এই বিষয়টিতে এখনই প্রতিটি পোস্ট দেখেছি:

ক্যোয়ারী_পোস্টগুলি এবং কেবলমাত্র কাস্টম ক্ষেত্রটি খালি না হলে ফলাফলগুলি দেখায়

http://scribu.net/wordpress/advanced-metadata-queries.html

Zilch। সাহায্য করুন...


আপনি ওয়ার্ডপ্রেসের কোন সংস্করণ ব্যবহার করছেন?
মাইকস্কিঙ্কেল

@ মাইকস্কিঙ্কেল - দুঃখিত মাইক, এটি দেখেনি - এটি 3.1 1
রোবালান

ডাব্লুপি 3.5 এই সমস্যাটি সমাধান করে এবং আপনাকে একটি আলাদা তুলনা পদ্ধতিটি ব্যবহার করতে দেয়
এরেনর পাজ

উত্তর:


6

হাই @ রব:

আপনি কীভাবে এটি করবেন তা বুঝতে না পারার কারণ এটি সম্ভব নয়, কমপক্ষে এসকিউএল অবলম্বন না করেই সম্ভব নয়। আপনার থিমের functions.phpফাইলটিতে নিম্নলিখিতগুলি যুক্ত করার চেষ্টা করুন:

add_filter('posts_where','yoursite_posts_where',10,2);
function yoursite_posts_where($where,$query) {
  global $wpdb;
  $new_where = " TRIM(IFNULL({$wpdb->postmeta}.meta_value,''))<>'' ";
  if (empty($where))
    $where = $new_where;
  else
    $where = "{$where} AND {$new_where}";
  return $where;
}

'featured_image'খালি মান সহ যদি আপনার কাস্টম ক্ষেত্র থাকে তবে উপরেরগুলি সেগুলি ফিল্টার করে ফেলবে। আপনার সমস্যা যদি অন্য কিছু হয় তবে আমাদের ডেটা এটির সমাধান করতে দেখতে কেমন তা আমাদের দেখতে হবে।

একটি বিষয় সম্পর্কে আমি কৌতূহলী; আপনি কিভাবে খালি মান পেতে 'featured_image'? ওয়ার্ডপ্রেস ৩.১ এ অ্যাডমিন ইউআই আপনাকে খালি মানগুলিতে প্রবেশ করা থেকে বিরত রাখতে সর্বাত্মক চেষ্টা করে। আশাকরি এটা সাহায্য করবে.


Godশ্বরের ধন্যবাদ ... সুতরাং এটি কেবল আমাদেরই নয়। এটা জেনে রাখা ভাল, মনে করি। আপনাকে ধন্যবাদ মাইকস্কিনকেল - তাদের সত্যই কোডেক্সে রাখা উচিত ... ব্যাখ্যাটির অপেক্ষায় রইলাম। ধন্যবাদ !!
রোবালান

@ রব - সুতরাং আমি আমার ৩.০০ জ্ঞানটি বন্ধ করে দিচ্ছিলাম এবং এখন আমি এটি ৩.১-এ পরীক্ষা করছি এবং এটি কার্যকর বলে মনে হচ্ছে না। আমার দুটি পোস্ট রয়েছে এবং একটি featured_imageকাস্টম ক্ষেত্র সহ এবং আপনার ক্যোয়ারীটি ভাল কাজ করে। আপনি কি সন্ধান করছেন? আপনার ক্যোয়ারিতে featured_imageকাস্টম ফিল্ড রয়েছে এমন পোস্টগুলি লোড করার কোনও সুযোগ আছে তবে যেখানে সেই ক্ষেত্রটির মান খালি আছে?
মাইকচিন্কেল

@ মাইকচিন্কেল - মজা করছেন না? হ্যাঁ, এটি ঠিক যা করছে - প্রতিটি পোস্টের বৈশিষ্ট্যযুক্ত_আইমেজ ক্ষেত্র রয়েছে, সেগুলি কেবল পুরো সেট নয়। এটি যাইহোক সমস্ত পোস্ট লোড হচ্ছে।
রোবালান

@ রব - আমার আপডেট হওয়া উত্তরটি দেখুন।
মাইকচিন্কেল

@ মাইকস্কিঙ্কেল - আপনাকে ধন্যবাদ! ক্যোয়ারিতে পোস্ট_ টাইপ সেট করার পরেও এটি নিখুঁতভাবে কাজ করছে বলে মনে হচ্ছে। খালি মানগুলি উদ্দেশ্যমূলক - প্রতিটি পোস্টে এই বৈশিষ্ট্যযুক্ত চিত্রটি নেই (এবং আমি পোস্ট থাম্বনেল সম্পর্কে জানি, এটি কেবল এই সাইটের জন্য একটি ভাল বিকল্প নয়)। অনেক ধন্যবাদ!
রোবালান

57

এটি ক্যোয়ারিতে মান পাওয়ার জন্য কাজ করে বলে মনে হচ্ছে, যদিও এটি বৈধ ফলাফলগুলি টানছে কিনা তা সম্পর্কে নিশ্চিত নন ..

'meta_query' => array(
    array(
        'key' => 'some_key',
        'value'   => array(''),
        'compare' => 'NOT IN'
    )
)

ফলাফলগুলি পরীক্ষা করার জন্য ক্ষেত্রগুলি তৈরি করার সময় হয়নি, তবে আমি আজকের সাথে কাজ করেছি এমন অনুসন্ধানগুলি দেখছি এবং লক্ষ্য করেছি NOT INযে খুশি হয়ে একটি খালি অ্যারে নেবে।


আমি জানি এই একটি পুরানো উত্তর, কিন্তু এই apparoach চেষ্টা তাদের জন্য, এটা সঙ্গে কাজ করে 'compare' => 'NOT LIKE'পরিবর্তে 'NOT IN'
handsofaten

3
অবশ্যই ব্যবহার করার জন্য আরও দক্ষ! = না বা না পছন্দ করার পরিবর্তে। ওয়ার্ডপ্রেস.সটাকেক্সচেঞ্জ / এএইচটি 286/32863 হিসাবে (এটি মেটা কীগুলি সম্পর্কে, তবে একই নীতিটি)
আদম

5
এমনকি পরিষ্কার সমাধান: অ্যাডাম মত ইতিমধ্যে বিবৃত। ব্যবহার করার জন্য: 'value' => '', 'compare' => '!='
মার্টিজন ভ্যান হুফ

এটি খালি অ্যারে নয় তা নিশ্চিত করার জন্য আপনার যদি যাচাই করা দরকার ...'value' => array('', array(), serialize(array())), 'compare' => 'NOT IN'
স্টেফানিউকিউ

10

এটি একটি পুরানো প্রশ্ন, তবে মনে হয় ওয়ার্ডপ্রেস এই "অনুপস্থিত বৈশিষ্ট্য" স্থির করেছে: এখন, ওয়ার্ডপ্রেস কোডেক্স অনুসারে মেটা কীটির অস্তিত্ব (বা অস্তিত্ব) অনুসন্ধান করা সম্ভব , এটির মতো

'meta_query' => array(
    array(
        'key' => 'featured_image',
        'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key
    )
)

এটি WP> = 3.5 হিসাবে উপলব্ধ 3.5


EXISTSখালি মানগুলি দেখাবে যা আমরা এখানে পরে নেই। 'value' => '', 'compare' => '!=' আমার পরীক্ষা যতদূর যায় সর্বোত্তম সমাধান ।
বেন

1
@ বেন ঠিক একইভাবে ওপি চেষ্টা করেছিল, তবে কোনও সাফল্য ছাড়াই, মনে হয়। মেটা_কি অস্তিত্বের ভিত্তিতে পোস্টগুলি পুনরুদ্ধার করার জন্য কোনও পদ্ধতি অনুসন্ধান করে লোকেরা এটি খুঁজে পেতে পারে তা নিশ্চিত করার জন্য আমি আমার সমাধান যুক্ত করেছি। যেহেতু একটি মেটার মান "কিছু", "খালি" বা "নাল" হতে পারে (যদি
মেটাটির

4

এটি আমার জন্য কাজ করা ক্যোয়ারী। ২০১১ সালের t31os এর উত্তরের তুলনার সাথে খুব মিল, তবে মেটা কী / মানটি কেবল একটি সাধারণ পাঠ্য লেখার কারণে এটি মেটা_কিউরি অ্যারে হওয়ার দরকার নেই।

$args = array(
    'posts_per_page' => 5,//replaced 'showposts' in version 2.1
    'meta_key' => 'featured_image',
    'meta_value' => array(''),
    'meta_compare' => 'NOT IN'
);

যে কারণেই হোক না কেন, 'মেটা_ভ্যালু ' => '' এবং 'মেটা_কম্পেয়ার' => '! =' বা 'মেটা_কম্পে' => 'নট লাইক' এখনও আমার জন্য সমস্ত পোস্ট টানেনি , তবে সম্ভবত এই সত্যটির সাথে কিছু করার আছে অ্যাডভান্সড কাস্টম ফিল্ডস (এসিএফ) প্লাগইন ব্যবহার করে আমি আমার মেটা মান তৈরি করেছি।

কোডেক্সে কাস্টম ফিল্ড পরামিতি সম্পর্কে আরও পড়ুন



3

আমি কিছু অনুপস্থিত করছি?

<?php 
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => -1,
        'meta_key' => "featured_image"
    );
    $the_query = new WP_Query( $args ); 

?>

এটা করবে না?


সম্পাদনা: কোডেক্স থেকে: $query = new WP_Query( 'meta_key=featured_image' ); এখানে দেখুন: codex.wordpress.org/Class_References/…
ইনফিনিটি মিডিয়া

প্রথমত, আপনি সর্বদা একটি মন্তব্য যুক্ত করার পরিবর্তে একটি প্রশ্ন বা উত্তর সম্পাদনা করতে পারেন । দ্বিতীয়: মন্তব্যের পরিবর্তে উত্তরগুলির অপব্যবহার করবেন না ।
কায়সার

আপনার যদি নতুন প্রশ্ন থাকে তবে দয়া করে প্রশ্ন জিজ্ঞাসা বোতামটি ক্লিক করে এটি জিজ্ঞাসা করুন । যদি এই প্রসঙ্গে সরবরাহ করতে সহায়তা করে তবে এই প্রশ্নের একটি লিঙ্ক অন্তর্ভুক্ত করুন।
কায়সার

@ কাইজার - আমার কাছে মনে হচ্ছে তিনি উত্তর দিচ্ছেন। তিনি তার কোডটি বৈধ কিনা তা জিজ্ঞাসা করছেন না, তবে আমি মনে করি যে তিনি বিশ্বাস করেন তার সাথে কীভাবে বিশ্বাস করবে সেই প্রশ্নের সাথে একরকম ব্যঙ্গাত্মকভাবে প্রশ্নের উত্তর দেওয়া হচ্ছে।
নাথান

@ নাথান এই মন্তব্যগুলির জন্য কি।
কায়সার

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