我很难通过以下方式使WP显示类别的链接:
- 一个
- 苹果
- 艺术
- 乙
- 船
- 布梅朗...等
我尝试了以下内容,但由于某种原因,查询没有显示任何内容
$first_char = 'b';
$links = $wpdb->get_results("
SELECT *
FROM $wpdb->links
WHERE SUBSTR($wpdb->links.link_name,1,1) = %s
ORDER BY $wpdb->links.link_name
", $first_char);
if ($links) {
foreach ( $links as $link )
{
?>
<p>
<a href="<?php echo $link->link_url; ?>" rel="bookmark" title="Permanent Link to <?php echo $link->link_name; ?>">
<?php echo $link->link_name; ?>
</a>
</p>
<?php
}
}
以及我如何使其仅显示特定类别。任何帮助都非常感谢!谢谢
这不是$wpdb->get_results()
的正确用法。根据Wordpress Codex,get_results的第二个参数是四个预定义常量之一,即:
- 对象 - 结果将输出为行对象的数字索引数组。
- OBJECT_K - 结果将输出为行对象的关联数组,使用第一列的值作为键(重复项将被丢弃)。
- ARRAY_A - 结果将输出为关联数组的数字索引数组,使用列名作为键。
- ARRAY_N - 结果将输出为数字索引数组的数字索引数组。
换句话说,"b"不是有效值。基于此文档(我对Wordpress不是很熟悉),似乎OBJECT_K适合您的情况。您可以将SELECT *
更改为SELECT link_name,*
,虽然从数据库优化/性能的角度来看效率低下,但会将检索到的第一列设置为 link_name。如果我没看错的话,这将自动为您按字母顺序排列。但是,您可能也可以完全放弃第二个参数,它会起作用。
$first_char = 'b';
$category_id = 3; // get only category with id 3, for example
$links = $wpdb->get_results("
SELECT *
FROM $wpdb->links
WHERE SUBSTR($wpdb->links.link_name,1,1) = $first_char
AND WHERE $wpdb->links.link_category = $category_id
ORDER BY $wpdb->links.link_name
");
if ($links) {
foreach ( $links as $link )
{
?>
<p>
<a href="<?php echo $link->link_url; ?>" rel="bookmark" title="Permanent Link to <?php echo $link->link_name; ?>">
<?php echo $link->link_name; ?>
</a>
</p>
<?php
}
}