0

我很难让 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
            }

        }

还有我怎样才能让它只显示一个特定的类别。非常感谢任何帮助!谢谢,

4

1 回答 1

1

这不是正确使用$wpdb->get_results(). 根据 Wordpress Codex, get_results 的第二个参数是四个预定义常量之一,即:

  • OBJECT - 结果将作为行对象的数字索引数组输出。
  • 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
        }

    }
于 2012-06-15T02:01:19.233 回答