Halaman 'Home' khusus saya diatur untuk mengurutkan posting kustom saya melalui bidang tanggal kustom dengan kode ini (diperbarui menjadi nama kustom) di functions.php:
// sort order for home page
add_action('wp', 'wwgo_check_page');
function wwgo_check_page () {
if (is_page()) {
add_filter('get_previous_post_sort', 'sort_it');
add_filter('get_next_post_sort', 'sort_it');
add_filter('posts_orderby', 'sort_it' );
add_filter('posts_join', 'join_it' );
add_filter('posts_where', 'where_it' );
function sort_it () {
global $wpdb;
return " $wpdb->postmeta.meta_value ASC ";
}
function join_it( $join ) {
global $wpdb;
$join .= " LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id) ";
return $join;
}
function where_it( $where ) {
global $wpdb;
$where .= "AND $wpdb->postmeta.meta_key = 'deadline' ";
return $where;
}
}
}
Yang keren dan sederhana. Sekarang. Saya ingin ini berfungsi di seluruh situs. Saya ingin posting pada halaman arsip, kategori dll untuk disortir terlebih dahulu oleh bidang tanggal kustom.
Ada ide?
Saya telah mencoba mengubah ' if
' ke is_archive()
tetapi itu tidak berpengaruh. Saya mencoba <! is_single()>
juga.
Saya yakin itu harus sesuatu yang sederhana. Tapi saya baru mengenal php dan karenanya tidak mengerti.
Inilah situsnya , tempat Anda dapat melihat beranda yang disortir dengan baik, tetapi jika Anda mengklik 'puisi' (satu-satunya dengan beberapa posting), pengurutan tidak berfungsi.
Setiap saran akan disambut dengan banyak sukacita.
Terima Kasih.
josh_
untuk menghindari penamaan tabrakan.Jawaban:
Gunakan
query_vars
atau permintaan filter untuk menambahkanorderby
jikaorderby
tidak disajikan dalam string kuerisumber
request
saran filteris_archive()
dan serupa di awal proses.Mengapa Anda tidak menggunakan query_posts ()?
Anda juga dapat mengubah kueri menggunakan kait pre_get_posts dan melakukan pengurutan kondisional Anda di sana dengan is_archive (), is_page () dll ...
sumber
Saya melihat pertanyaan Anda yang lain juga.
Jika Anda ingin mengurutkan berdasarkan nilai meta tanggal, mereka harus secara alami berada dalam format yang sama - Saya rasa ini format tanggal PHP ('m-y') seperti yang Anda tentukan dalam kode di sana?
Jika itu masalahnya, Anda mungkin menemukan bahwa jika Anda mengubah
meta_value
kode itu untukmeta_value_num
mendapatkan hasil yang lebih baik?Tidak yakin ini akan berhasil, tetapi mungkin patut dicoba.
sumber