問題描述
我正在嘗試構建基於 Wordpress 的字典,基本上它將有 26 頁 (每個字母一個):
A B C … X Y Z
並且每個頁面將顯示從給定字母開始的所有帖子,因此在打開”A” 頁面後,應顯示以下內容:
aback
abacus
abalone
(…) azure
我在考慮自定義帖子類型,但是創建和維護 26 個自定義帖子類型聽起來像是一種過分的功能。
什麼是最有效的方式排序這樣的帖子?數據庫查詢,用 PHP 分解循環?我正在瞄準 1000 個帖子 (是的,它必須是 Wordpress :)) 。
最佳解決方案
不要使用帖子類型,使用分類術語!
保存後,使用帖子標題的第一個字母將對象術語設置為 A-Z 分類。確保強制大小寫一致。確保為字母表中的每個字母創建術語,以及數字和其他非字母數字符號的術語。
這應該比查詢每個帖子標題的第一個字母快得多,它為您提供了一個分類法,您可以使用更多的東西,如標籤雲或術語列表小工具!確定哪些字母具有相關聯的帖子以及多少,而不強制數據庫手動計數也是一種更快速的方法,您可以使用標準的 WordPress 術語 API 開箱即可執行更復雜的查詢,例如以元音開頭的帖子
次佳解決方案
如果您不想使用優選的分類術語方法,請執行以下操作:
<ul class="posts">
<?php
global $wpdb;
$request = "a" // could be any letter you want
$results = $wpdb->get_results(
"
SELECT * FROM $wpdb->posts
WHERE post_title LIKE '$request%'
AND post_type = 'post'
AND post_status = 'publish';
"
);
if ( $results )
{
foreach ( $results as $post )
{
setup_postdata ( $post );
?>
<li>
... loop stuff here (the_title, the_permalink) ...
</li>
<?php
}
}
else
{
?>
<div class="alert">No clubs found for that letter. Please try again, or use the search at the top.</div>
<?php
}
?>
</ul>
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。