আমি বর্তমানে সংগীতের শিরোনামগুলির একটি তালিকা আউটপুট দেওয়ার চেষ্টা করছি এবং শিরোনামের প্রাথমিক নিবন্ধটি বাছাই করা উপেক্ষা করতে চাই (তবে এখনও প্রদর্শিত)।
উদাহরণস্বরূপ, যদি আমার কাছে ব্যান্ডগুলির একটি তালিকা থাকে তবে এটি বর্ণমালা অনুসারে ওয়ার্ডপ্রেসে প্রদর্শিত হবে:
- ব্ল্যাক সাবাথ
- নেতৃত্বে জেপেলিন
- গোলাপী ফ্লয়েড
- দ্য বিট্লস
- দ্য কিঙ্কস
- ঘূর্ণায়মান পাথর
- পাতলা লিজি
পরিবর্তে আমি প্রাথমিক আর্টিকেল 'দ্য' উপেক্ষা করার সময় এটি বর্ণানুক্রমিকভাবে প্রদর্শন করতে চাই:
- দ্য বিট্লস
- ব্ল্যাক সাবাথ
- দ্য কিঙ্কস
- নেতৃত্বে জেপেলিন
- গোলাপী ফ্লয়েড
- ঘূর্ণায়মান পাথর
- পাতলা লিজি
আমি গত বছর থেকে একটি ব্লগ এন্ট্রি একটি সমাধান জুড়ে এসেছি , যা নিম্নলিখিত কোডের পরামর্শ দেয় 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
পরে কোয়েরিটি মোড়ানো ।
আমি এটি চেষ্টা করেছি, তবে আমি আমার সাইটে নিম্নলিখিত ত্রুটিটি পেয়ে যাচ্ছি:
ওয়ার্ডপ্রেস ডাটাবেস ত্রুটি: [অজানা কলাম 'শিরোনাম 2' 'ক্রম ধারা']
Wp_posts নির্বাচন করুন। * Wp_posts থেকে যেখানে 1 = 1 এবং wp_posts.post_type = 'রিলিজ' এবং (wp_posts.post_status = 'প্রকাশ' বা 'wp_posts.post_status =' প্রাইভেট ') অর্ডার বা শিরোনাম 2 দ্বারা ASC
আমি মিথ্যা বলব না, আমি ওয়ার্ডপ্রেসের পিএইচপি অংশে বেশ নতুন, তাই কেন আমি এই ত্রুটি পাচ্ছি তা সম্পর্কে আমি নিশ্চিত নই। আমি দেখতে পাচ্ছি যে এটি 'শিরোনাম 2' কলামটির সাথে কিছু করার ছিল, তবে এটি আমার বোঝা ছিল যে প্রথম ফাংশনটি এটির যত্ন নেওয়া উচিত। এছাড়াও, যদি এটি করার কোনও স্মার্ট উপায় থাকে তবে আমি সকলেই কান। আমি এই সাইটটি প্রায় ঘুরে বেড়াচ্ছি এবং অনুসন্ধান করে যাচ্ছি, তবে সত্যিকার অর্থে আমি খুব বেশি সমাধান খুঁজে পাইনি।
ফিল্টারগুলি ব্যবহার করে আমার কোডটি কোনওরকম সহায়তা হলে এটি দেখতে এমন দেখাচ্ছে:
<?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();
?>