Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Array Kueri Meta WordPress

Coba yang ini dengan WP_Query tidak perlu hubungan cukup gunakan bagian bandingkan dengan 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);

ATAU dengan get_posts coba ini

$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);

ATAU dengan kueri khusus yang dapat Anda lakukan sebagai berikut

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()");

Juga jangan menyimpan larik id dalam satu baris, alih-alih mengulang melalui larik id dan menormalkan data suka Anda secara manual Jangan membuat serial data ke dalam bidang basis data. Itulah Database_normalization adalah untuk dan masukkan setiap id di baris baru karena

$likes = array(61, 62);

foerach($likes as $l){

update_post_meta($post->ID, "likes", $l);

}

Dan di bawah ini adalah pertanyaan yang Anda minta dalam komentar bounty

$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() ");

Saya telah menggunakan INNER JOINs di wp_term_relationships dan wp_term_taxonomy tabel wp_term_relationships menyimpan hubungan posting dan taksonomi kategori dan tabel wp_term_taxonomy memiliki taksonomi kategori dan juga id kategori

Berikut adalah bagian yang mencakup

1. kategori (sertakan dan kecualikan)

AND wtt.`term_id` IN(1,2,3) AND wtt.`term_id` NOT IN (4,5,6,) 

2. abaikan postingan menurut larik ID

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. Membuat tabel mysql dengan set karakter default eksplisit, bagaimana jika tidak?

  2. Bagaimana cara menonaktifkan pemicu di MySQL?

  3. jQuery Autocomplete (Jarak Jauh) - contoh

  4. Apakah ruang yang ditempati oleh baris yang dihapus dapat digunakan kembali?

  5. PHP/MySQL:Menyimpan dan mengambil UUIDS