问题描述

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