इसे WP_Query
के साथ आज़माएं संबंध की कोई आवश्यकता नहीं है बस तुलना भाग का उपयोग IN
. के साथ करें
$user_ids = array(60, 61, 62, 63);
$args = array(
'post_type' => 'post',
'meta_key' => 'likes',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'rand',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'likes',
'value' => $user_ids, //array
'compare' => 'IN',
)
)
);
$query = new WP_Query($args);
या get_posts द्वारा इसे आजमाएं
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'rand',
'meta_query' => array(
array(
'key' => 'likes',
'value' => $user_ids,
'compare' => 'IN'
)
)
);
$posts = get_posts($args);
या एक कस्टम क्वेरी द्वारा आप निम्नानुसार कर सकते हैं
global $wpdb;
$liked_posts=$wpdb->get_results("SELECT * FROM `wp_posts` WHERE
post_type='post' AND post_status ='publish' AND ID
IN(
SELECT post_id FROM `wp_postmeta` WHERE meta_key='likes'
AND meta_value IN (".join(',',$user_ids).")
) ORDER BY RAND()");
इसके अलावा आईडी की सरणी को एक पंक्ति में संग्रहीत न करें इसके बजाय आईडी सरणी के माध्यम से लूप करें और सामान्य करें आपकी पसंद का डेटा मैन्युअल रूप से डेटा को डेटाबेस फ़ील्ड में क्रमबद्ध न करें। यही है Database_normalization के लिए है और प्रत्येक आईडी को नई पंक्ति में सम्मिलित करें क्योंकि
$likes = array(61, 62);
foerach($likes as $l){
update_post_meta($post->ID, "likes", $l);
}
और नीचे वह प्रश्न है जो आपने बाउंटी टिप्पणियों में पूछा है
$liked_posts=$wpdb->get_results("
SELECT * FROM `wp_posts` wp
INNER JOIN `wp_term_relationships` wtr ON (wp.`ID`=wtr.`object_id`)
INNER JOIN `wp_term_taxonomy` wtt ON (wtr.`term_taxonomy_id` =wtt.`term_taxonomy_id`)
WHERE wp.post_type='post' AND wp.post_status ='publish' AND wp.ID
IN(
SELECT post_id FROM `wp_postmeta` WHERE meta_key='likes'
AND meta_value IN (".join(',',$user_ids).")
) AND wp.ID NOT IN (100,101,102)
AND wtt.`term_id` IN(1,2,3) AND wtt.`term_id` NOT IN (4,5,6,)
ORDER BY RAND() ");
मैंने INNER JOINs
का उपयोग किया है wp_term_relationships
. पर और wp_term_taxonomy
तालिका wp_term_relationships
पदों के संबंध और श्रेणी और तालिका के वर्गीकरण को संग्रहीत करता है wp_term_taxonomy
श्रेणी की वर्गीकरण और श्रेणी आईडी भी है
यहाँ वह हिस्सा है जो
. को कवर करता है<मजबूत>1. श्रेणी (शामिल और बहिष्कृत करें)
AND wtt.`term_id` IN(1,2,3) AND wtt.`term_id` NOT IN (4,5,6,)
<मजबूत>2. आईडी की एक सरणी द्वारा पोस्ट को अनदेखा करें
AND wp.ID NOT IN (100,101,102)
or $postids =array(100,101,102);
AND wp.ID NOT IN (".join(',',$postids).")