我正在尝试建立基于Wordpress的字典,基本上它将有26页(每个字母一页):
ABC ... XYZ
并且每个页面将显示所有以给定字母开头的帖子,因此在打开“ A”页面后,它应显示如下内容:
大吃一惊
算盘
鲍鱼
(...)天蓝色
我最初是在考虑自定义帖子类型,但是创建和维护26种自定义帖子类型听起来太过分了。
这样排序帖子的最有效方法是什么?数据库查询,用PHP拆分循环?我的目标是发布1000篇帖子(是的,必须是Wordpress :))。
我正在尝试建立基于Wordpress的字典,基本上它将有26页(每个字母一页):
ABC ... XYZ
并且每个页面将显示所有以给定字母开头的帖子,因此在打开“ A”页面后,它应显示如下内容:
大吃一惊
算盘
鲍鱼
(...)天蓝色
我最初是在考虑自定义帖子类型,但是创建和维护26种自定义帖子类型听起来太过分了。
这样排序帖子的最有效方法是什么?数据库查询,用PHP拆分循环?我的目标是发布1000篇帖子(是的,必须是Wordpress :))。
Answers:
不要使用帖子类型,请使用分类术语!
保存时,使用帖子标题的第一个字母,按AZ分类法设置对象术语。确保强制使用大写或小写以保持一致性。确保为字母表中的每个字母创建术语,并为数字和其他非字母数字符号创建术语。
这应该比查询每个帖子标题的首字母更快,并且它为您提供了一种分类法,您可以使用它来做更多的事情,例如标签云或术语列表工具。这也是确定哪些字母具有关联帖子以及多少帖子的更快方法,而无需强制数据库手动计数,并且您可以立即使用标准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>
WHERE post_title LIKE 'request%'
在此处查看此文章:按标题的query_post?
或者,您可以使用PODS 2框架创建保存前的帮助程序,并将帖子标题的首字母保存在某个字段中,并使用简单的WHERE条件。
或者使用所有字母创建一个下拉列表(另一个窗格/内容类型),并与您现有的帖子内容类型建立关系(在窗格2中是可能的),就是这样。因此,在保存词典术语之前,请从下拉框中选择要分配给该术语的字母。
在Pods 2中,您可以将多余的字段添加到现有的帖子内容类型中。这个插件/框架在Drupal世界中就像CCK + Views一样,真的很棒。
Pods 2是非常有用的插件。