2012-06-15 3 views
0

Я имею трудное время, чтобы сделать WP, чтобы отобразить звенья категории, следующим образом:WordPress - показать закладки звеньев категории от буквы

  • Яблока
  • Art
  • 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 
      } 

     } 

А также, как я могу сделать это, чтобы отобразить только из определенной категории. Любая помощь очень ценится! Thanks,

ответ

1

Неправильное использование $wpdb->get_results(). According to the Wordpress Codex, второй аргумент для get_results является одним из четырех предварительно определенных констант, а именно:

  • ОБЪЕКТ - результат будет выводиться как численно индексированный массив объектов строк.
  • OBJECT_K - результат будет выводиться как ассоциативный массив объектов строки, используя значения первого столбца в качестве ключей (дубликаты будут отброшены).
  • ARRAY_A - результат будет выводиться как числовой индекс массива ассоциативных массивов, используя имена столбцов в качестве ключей.
  • ARRAY_N - результат будет выводиться как числовой индекс массивов с числовой индексацией.

Иными словами, «b» не является допустимым значением. Основываясь на этой документации (и я не очень хорошо знаком с Wordpress), похоже, что OBJECT_K будет уместным в вашем случае. Вы можете изменить SELECT * на SELECT link_name,*, который, будучи неэффективным с точки зрения оптимизации/производительности db, установит первый столбец, полученный в 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 
     } 

    } 
+0

Здравствуйте, спасибо, что вы правы ... ваша помощь и ваше время, чтобы дать мне решение, высоко оценены. Мне удалось упорядочить по алфавиту, что я не уверен, как я могу получить ссылки определенной категории, потому что этот запрос дает мне все ссылки? ... ну в любом случае THANKS – MariaZ

+0

Вы заглянули в [wp_list_bookmarks()] (http : //codex.wordpress.org/Template_Tags/wp_list_bookmarks)? Я думаю, что это может быть больше того, чего вы хотите ... –

+0

да ... но мне нужно, чтобы они были разделены буквами, если я не пропустил что-то ... я не мог заставить его работать так, как я хотел ... спасибо – MariaZ

Смежные вопросы