0

次の方法で、WP にカテゴリのリンクを表示させるのに苦労しています。

  • アップル
  • 美術
  • B
  • ボート
  • ブメラン…など

次のことを試しましたが、何らかの理由でクエリに何も表示されません

        $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 の 2 番目の引数は、定義済みの 4 つの定数の 1 つです。

  • OBJECT - 結果は、数値でインデックス付けされた行オブジェクトの配列として出力されます。
  • OBJECT_K - 結果は、最初の列の値をキーとして使用して、行オブジェクトの連想配列として出力されます (重複は破棄されます)。
  • ARRAY_A - 結果は、列名をキーとして使用して、連想配列の数値インデックス配列として出力されます。
  • ARRAY_N - 結果は、数値インデックス配列の数値インデックス配列として出力されます。

つまり、「b」は有効な値ではありません。このドキュメントに基づいて(そして私はWordpressにあまり詳しくありません)、OBJECT_Kがあなたの場合に適しているようです。データベースの最適化/パフォーマンスの観点からは非効率的ですが、取得した最初の列を link_name に設定するものにSELECT *変更できます。SELECT link_name,*私がこれを正しく読んでいれば、自動的にアルファベット順に並べ替えられます。ただし、おそらく 2 番目の引数を完全に削除することもでき、それは機能します。

    $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 に答える