আমি কোড স্নিপেটের সাথে খেলছিলাম যা অ্যাডমিন অনুসন্ধানগুলিতে মেটা ডেটা যুক্ত করে।
আমি খুঁজে পেয়েছি সেরা স্নিপেট এই প্রশ্নে স্টেফানো লিখেছিলেন ।
তবে, মেটা-বিহীন পদগুলি অনুসন্ধান করার সময় এটির 1, বিরক্তিকর বাগ রয়েছে বলে মনে হয়।
আমার স্থানীয় ডেভ ইনস্টল থেকে এখানে কিছু গ্রাব রয়েছে। আমি স্ক্রিনে 2 মাইএসকিউএল ক্যোয়ারী প্রিন্ট করেছি।
আমি পরীক্ষা করতে ব্যবহার করছি একক সিপিটি পোস্টের ভিউ
এটি কোডটি প্রত্যাশিত হিসাবে কাজ করছে এবং আমাকে অ্যাডমিনের থেকে মেটা ডেটা অনুসন্ধান করার অনুমতি দিচ্ছে
দুর্ভাগ্যক্রমে কোড শিরোনামে এই ক্ষেত্রে নন-মেটা ম্যাচে নকল তৈরি করে
পোস্টের স্থিতি, পোস্টের ধরণ এবং ডুপসের পূর্বপুরুষদের পোস্ট দেখানো একটি দখল
! পোস্টের স্থিতি, পোস্টের ধরণ এবং ডুপসের পূর্বপুরুষদের পোস্ট দেখানো একটি দখল
আমি যে কোডটি চালাচ্ছি সেগুলি এখানে, এটি মূলত স্টেফানোর মতো, তবে কোয়েরিটি কাজ করার জন্য আমার অপচেষ্টার চেষ্টা রয়েছে।
/*
* Search custom fields from admin keyword searches
*/
function rel_search_join( $join ) {
global $pagenow, $wpdb;
if ( is_admin() && $pagenow == 'edit.php' && $_GET['post_type'] == 'listings' && $_GET['s'] != '') {
$join .= 'LEFT JOIN ' . $wpdb->postmeta . ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
}
echo '<br><strong>JOIN</strong>: ';
print_r ( $join );
echo '<br>';
return $join;
}
add_filter('posts_join', 'rel_search_join' );
function rel_search_where( $where ) {
global $pagenow, $wpdb;
if ( is_admin() && $pagenow == 'edit.php' && $_GET['post_type']=='listings' && $_GET['s'] != '' ) {
$where = preg_replace( "/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where );
$where = str_replace( "OR wp_posts.post_status = 'pending'", "", $where );
$where = str_replace( "OR wp_posts.post_status = 'private'", "", $where );
$where = str_replace( "OR wp_posts.post_status = 'draft'", "", $where );
$where = str_replace( "OR wp_posts.post_status = 'future'", "", $where );
}
echo '<br><strong>WHERE</strong>: ';
print_r ( $where );
echo '<br>';
return $where;
}
add_filter( 'posts_where', 'rel_search_where' );