问题描述
我正在尝试构建基于 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。