Saya memiliki panggilan query_posts dalam templat WP. Melalui penggunaan More Fields Plugin saya dapat memberikan admin situs kemampuan untuk membuat acara (jenis posting khusus) dan kemudian memasukkan tanggal yang diformat: YYYY / mm / dd.
Pertanyaan utamanya adalah; nilai apa yang harus saya sampaikan ke opsi nilai dalam array meta_query? Saat ini saya mencoba untuk melewati "date (" Y / m / dh: i A ")" (minus tanda kutip), karena, seperti yang saya pahami, itu akan mencetak tanggal saat ini hari ini. Saya tidak peduli tentang waktu berkencan sehingga mungkin tidak relevan. Akhirnya saya mencoba menggunakan opsi bandingkan untuk memakukan acara mendatang, melewati acara di berbagai tempat di situs ini. Di satu tempat lain saya benar-benar harus meneruskan opsi nilai array yang mencetak hari pertama dan terakhir bulan ini, membatasi output untuk peristiwa yang terjadi bulan ini.
<?php
query_posts( array(
'post_type' => 'event', // only query events
'meta_key' => 'event_date', // load up the event_date meta
'orderby' => 'meta_value', // sort by the event_date
'order' => 'asc', // ascending, so earlier events first
'posts_per_page' => '2',
'meta_query' => array( // restrict posts based on meta values
'key' => 'event_date', // which meta to query
'value' => date("Y/m/d h:i A"), // value for comparison
'compare' => '>=', // method of comparison
'type' => 'DATE' // datatype, we don't want to compare the string values
) // end meta_query array
) // end array
); // close query_posts call
?>
'type' => 'DATE'
?date_i18n()
, bukan asli phpdate()
.Ini sangat tergantung pada bagaimana tanggal Anda disimpan dalam nilai meta di tempat pertama. Secara umum, itu ide yang baik untuk menyimpan tanggal di MySQL sebagai tanggal / cap waktu MySQL.
Stempel waktu MySQL memiliki format
Y-m-d h:i:s
.Namun, itu selalu merupakan ide yang baik untuk menggunakan fungsi mangling tanggal WP sendiri. Dengan demikian, untuk mendapatkan tanggal saat ini dalam format MySQL, gunakan
current_time('mysql')
.Untuk memformat tanggal MySQL untuk tampilan, gunakan
mysql2date($format, $mysql_date)
. Dalam hal ini yang terbaik adalah menampilkan tanggal yang dikonfigurasi dalam pengaturan, jadi gunakan$format = get_option('date_format');
.Untuk menyimpan tanggal yang dipilih pengguna, Anda harus mentranskodekannya menjadi tanggal MySQL. Untuk melakukannya, cara termudah - tetapi tidak paling aman adalah
date('Y-m-d h:i:s', $unix_timestamp);
.$unix_timestamp
seringkali dapat diturunkan melaluistrtotime($user_input)
.Namun,
strtotime()
jangan lakukan pemeriksaan kewarasan sendiri, jadi sebaiknya tulis fungsi percakapan Anda sendiri.Adapun untuk mendapatkan rentang bulan, inilah fungsi yang saya gunakan untuk mendapatkan batas bulan untuk setiap timestamp MySQL:
Jika Anda ingin mendapatkan batas minggu, WP sudah dilengkapi dengan fungsi untuk itu:,
get_weekstartend($time);
yang juga memberikan batas sebagai array.Anda kemudian dapat menggunakan ini dalam
meta_query
argumen Anda dengan melakukan dua perbandingan terpisah.sumber
Y-m-d G:i:s
"?G:i:s
adalah 24 jam,h:i:s
12 jam.Saya akhirnya pergi dengan yang berikut ini. Saya menyiapkan bidang event-momth dan membandingkan dari sana. Terima kasih untuk bantuannya
sumber
Hai, di bawah ini saya memposting solusi saya. Di mana saya telah menyimpan tanggal dalam
Y-m-d H:i
format (seperti 2013-07-31 16:45).Acara yang berakhir setelah Hari ini hanya akan ditanyakan oleh
meta_query
.date_default_timezone_set('Asia/Calcutta');
Saya menetapkan zona waktu default untuk
date()
fungsi.sumber