Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

वर्डप्रेस मेटा क्वेरी एरेज़

इसे 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).")


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में एक महीने में दिनों की संख्या कैसे प्राप्त करें

  2. मैं कोडइग्निटर में तैयार वक्तव्यों का उपयोग कैसे कर सकता हूं?

  3. SQL:परिणाम पंक्ति को कई बार दोहराएं, और पंक्तियों को क्रमांकित करें

  4. इस प्रश्न को वाक्पटु के लिए परिवर्तित करें

  5. MYSQL SUM GROUP BY