是否显示以给定字母开头的所有帖子?

时间:2012-10-05 作者:Wordpressor

我正在尝试构建基于Wordpress的词典,基本上它将有26页(每个字母对应一页):

A B C。。。X Y Z

每个页面都会显示以给定字母开头的所有帖子,因此打开“A”页面后,应该显示如下内容:

大吃一惊

算盘

鲍鱼

(…)蔚蓝色的

起初我在考虑自定义帖子类型,但创建和维护26个自定义帖子类型听起来有些过头了。

对这样的帖子进行排序最有效的方法是什么?数据库查询,用PHP拆分循环?我的目标是1000篇帖子(是的,必须是Wordpress:)。

3 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

不要使用帖子类型,使用分类术语!

保存时,使用文章标题的第一个字母在A-Z分类法中设置对象术语。确保强制使用大写或小写以保持一致性。确保为字母表中的每个字母创建术语,并为数字和其他非字母数字符号创建术语。

这应该比查询每个帖子标题的第一个字母要快,它提供了一个分类法,您可以使用它做更多的事情,比如标记云或术语列表器小部件!它还可以更快地确定哪些字母有关联的帖子以及有多少,而无需强制数据库手动计数,并且您可以使用标准的WordPress术语API进行更复杂的查询,例如以元音开头的帖子

SO网友:21zna9

如果不想使用首选的分类术语方法,请执行以下操作:

<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>

SO网友:Derfder

请在此处查看此文章:query_post by title?

或者,可以使用创建预保存辅助对象PODS 2 framework 并将文章标题的第一个字母保存在某个字段中,并使用简单的WHERE条件。

或者创建一个包含所有字母的下拉列表(另一个pod/contenttype),并创建与您现有帖子内容类型的关系(在pods 2中是可能的),仅此而已。因此,在保存词典术语之前,请从下拉框中选择要分配给该术语的字母。

在Pods 2中,您可以向现有帖子内容类型添加额外字段。这个插件/框架有点像Drupal世界中的CCK+视图,真是太棒了。

Pods 2是一个非常有用的插件。

结束

相关推荐

Save post meta foreach loop

我的脑子垮了。如何保存此帖子数据?在表单中构建一些键值对。 for ($i = 1; $i <= 3; $i++) { $saved = $meta[$i]; //print_r($saved); //echo $saved[\'key\']; echo \'<p>\'; echo \'<label for=\"meta_k_\'.$i.\'\">Ke