Şu anda müzik başlıklarının bir listesini çıkarmak için çalışıyorum ve sıralama (ama yine de başlık) ilk makalesini görmezden istiyorum.
Örneğin, bir grup listesi vardı, WordPress alfabetik olarak şu şekilde görüntülenir:
- Black Sabbath
- Led Zeplin
- Pink Floyd
- The Beatles
- Kinks
- Yuvarlanan taşlar
- Minik lizy
Bunun yerine, 'The' ilk makalesini göz ardı ederken alfabetik olarak görüntülenmesini istiyorum, şöyle:
- The Beatles
- Black Sabbath
- Kinks
- Led Zeplin
- Pink Floyd
- Yuvarlanan taşlar
- Minik lizy
Geçen yıl blog girişinde bir çözümle karşılaştım , bu da aşağıdaki kodu önerir functions.php
:
function wpcf_create_temp_column($fields) {
global $wpdb;
$matches = 'The';
$has_the = " CASE
WHEN $wpdb->posts.post_title regexp( '^($matches)[[:space:]]' )
THEN trim(substr($wpdb->posts.post_title from 4))
ELSE $wpdb->posts.post_title
END AS title2";
if ($has_the) {
$fields .= ( preg_match( '/^(\s+)?,/', $has_the ) ) ? $has_the : ", $has_the";
}
return $fields;
}
function wpcf_sort_by_temp_column ($orderby) {
$custom_orderby = " UPPER(title2) ASC";
if ($custom_orderby) {
$orderby = $custom_orderby;
}
return $orderby;
}
ve ardından sorguyu add_filter
önce veremove_filter
sonra .
Bunu denedim, ancak sitemde aşağıdaki hatayı almaya devam ediyorum:
WordPress veritabanı hatası: ['sipariş yan tümcesinde' Bilinmeyen sütun 'başlık2']
Wp_posts SEÇİN. * Wp_posts'TEN NEREDE 1 = 1 AND wp_posts.post_type = 'release' AND (wp_posts.post_status = 'yayınla' VEYA wp_posts.post_status = 'private') SİPARİŞ TARAFINDAN (başlık2) ASC
Yalan söylemeyeceğim, WordPress'in php bölümünde oldukça yeniyim, bu yüzden bu hatayı neden aldığımdan emin değilim. 'Title2' sütunu ile ilgili bir şey olduğunu görebiliyorum, ancak ilk fonksiyonun bununla ilgilenmesi gerektiğine inanıyorum. Ayrıca, bunu yapmanın daha akıllı bir yolu varsa, ben tamamen kulaklarım. Etrafta dolaşıyorum ve bu siteyi araştırıyorum, ancak gerçekten çok fazla çözüm bulamadım.
Herhangi bir yardım varsa filtreleri kullanarak kodum şöyle görünür:
<?php
$args_post = array('post_type' => 'release', 'orderby' => 'title', 'order' => 'ASC', 'posts_per_page' => -1, );
add_filter('post_fields', 'wpcf_create_temp_column'); /* remove initial 'The' from post titles */
add_filter('posts_orderby', 'wpcf_sort_by_temp_column');
$loop = new WP_Query($args_post);
remove_filter('post_fields', 'wpcf_create_temp_column');
remove_filter('posts_orderby', 'wpcf_sort_by_temp_column');
while ($loop->have_posts() ) : $loop->the_post();
?>