मैं वर्तमान में संगीत शीर्षक की एक सूची का उत्पादन करने की कोशिश कर रहा हूं और शीर्षक के प्रारंभिक लेख को छांटना (लेकिन अभी भी प्रदर्शित करना) छांटना चाहता हूं।
उदाहरण के लिए यदि मेरे पास बैंड की सूची थी तो इसे इस तरह से वर्डप्रेस में वर्णानुक्रम में प्रदर्शित किया जाएगा:
- ब्लैक सब्बाथ
- लेड जेप्लिन
- गुलाबी फ्लोयड
- बीटल्स
- सनक
- रोलिंग स्टोन्स
- थिन लिज़ी
इसके बजाय मैं इस तरह के प्रारंभिक लेख 'द' की अनदेखी करते हुए इसे वर्णानुक्रम में प्रदर्शित करना चाहूंगा:
- बीटल्स
- ब्लैक सब्बाथ
- सनक
- लेड जेप्लिन
- गुलाबी फ्लोयड
- रोलिंग स्टोन्स
- थिन लिज़ी
मैं पिछले साल से एक ब्लॉग प्रविष्टि में एक समाधान भर आया था , जो निम्नलिखित कोड का सुझाव देता है 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;
}
और फिर क्वेरी को add_filter
पहले और remove_filter
बाद में लपेटकर ।
मैंने यह कोशिश की है, लेकिन मुझे अपनी साइट पर निम्न त्रुटि मिलती रहती है:
वर्डप्रेस डेटाबेस त्रुटि: [ऑर्डर क्लॉज 'में [अज्ञात कॉलम' title2 ']
Wp_posts का चयन करें। * wp_posts से 1 = 1 और wp_posts.post_type = 'release' AND (wp_posts.post_status = 'प्रकाशित करें या' wp_posts.post_status = 'private') ORDER BY UPPER (title2) को प्रकाशित करें।
मैं झूठ बोलने वाला नहीं हूं, मैं वर्डप्रेस के php भाग के लिए बहुत नया हूं, इसलिए मैं अनिश्चित हूं कि मुझे यह त्रुटि क्यों मिल रही है। मैं देख सकता हूं कि इसे 'title2' कॉलम के साथ कुछ करना है, लेकिन यह मेरी समझ थी कि पहले फ़ंक्शन को ध्यान रखना चाहिए। इसके अलावा, अगर ऐसा करने का कोई होशियार तरीका है तो मैं सभी कानों के पास हूं। मैं इस साइट को चारों ओर से देख रहा हूं और खोज रहा हूं, लेकिन मुझे वास्तव में बहुत सारे समाधान नहीं मिले हैं।
फ़िल्टर का उपयोग करने वाला मेरा कोड ऐसा दिखता है जैसे कि यह कोई मदद हो:
<?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();
?>