【问题标题】:wordpress - show bookmark links of a category by letterwordpress - 按字母显示类别的书签链接
【发布时间】:2012-06-15 01:40:56
【问题描述】:

我很难让 WP 以下列方式显示某个类别的链接:

  • 一个
  • 苹果
  • 艺术
  • Bumerang...等

我尝试了以下方法,但由于某种原因,查询没有显示任何内容

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

        }

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

【问题讨论】:

    标签: php mysql sql wordpress


    【解决方案1】:

    这不是$wpdb-&gt;get_results() 的正确用法。 According to the 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
            }
    
        }
    

    【讨论】:

    • 您好,谢谢您说得对……非常感谢您的帮助和您为我提供解决方案的时间。我设法按字母顺序排列,我不确定如何获得特定类别的链接,因为这个查询给了我所有的链接?...无论如何谢谢
    • 你看过wp_list_bookmarks()吗?我认为这可能是您想要的更多...
    • 是的...但我需要用字母分隔它们,除非我遗漏了什么...我无法让它按我想要的方式工作...谢谢
    • 我明白了。我不是 Wordpress 专业人士,但我相信我所做的调整应该会奏效。试试上面编辑过的代码,让我知道结果。 :)
    • 哇,非常感谢您抽出宝贵的时间来做这件事,但不幸的是不起作用,我认为表codex.wordpress.org/images/9/9e/WP3.0-ERD.png中没有行link_category,在类别的id中如果我没弄错是在 wp_terms 中,我不知道如何到达那张桌子……知道吗?对我来说是个谜……因为我很幸运 sql 技能:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多