Показати всі повідомлення, починаючи з даного листа?


12

Я намагаюся створити словник на основі Wordpress, в основному він буде мати 26 сторінок (по одній для кожної літери):

ABC ... XYZ

І на кожній сторінці будуть відображатися всі повідомлення, починаючи з заданої літери, тому після відкриття сторінки "А" вона повинна відображати щось на зразок:

острах

абакус

малий

(...) блакитний

Спочатку я думав про користувацькі типи публікацій, але створення та підтримка 26 типових постів звучить як надмір.

Який буде найефективніший спосіб упорядкування подібних публікацій? Запит на базу даних, розділення циклу з PHP? Я націлений на 1000 публікацій (так, це має бути Wordpress :)).

Відповіді:


10

Не використовуйте типи публікацій, використовуйте терміни таксономії!

Після збереження встановіть об'єктні терміни в таксономії AZ, використовуючи першу букву заголовка повідомлення. Переконайтеся, що для консистенції примушують верхню або нижню літери. Обов’язково створіть терміни для кожної літери алфавіту та термін для цифр та інших не буквено-цифрових символів.

Це має бути швидше, ніж запит на першу букву кожного заголовка публікації, і це дає вам таксономію, з якою ви можете робити більше матеріалів, як хмари тегів або віджети термінів лістеру! Це також набагато швидший спосіб визначити, які листи мають пов’язані публікації і скільки, не змушуючи базу даних рахувати вручну, і ви можете використовувати стандартні API-терміни WordPress з поля, щоб робити складніші запити, наприклад, повідомлення, що починаються з голосних


Це, безумовно, ідеальний шлях. Однак майте на увазі, з тисячами дописів; Це може бути досить громіздким завданням. Потрібно спочатку запитувати всі повідомлення, що починаються з кожної літери алфавіту, та оновлювати кожну публікацію відповідним терміном таксономії, відповідно до відповідної літери алфавіту. В іншому випадку для вручну оновлення кожної окремої публікації знадобиться століття .
Майкл Еклунд

Так, це ВЕЛИЧИЙ мінус, ці повідомлення будуть додані ВІДОМО невідомими людьми, і я не можу розраховувати на них, коли справа стосується встановлення правильної таксономії під час створення нової посади. Я не впевнений, що запит на всі повідомлення та оновлення їх щоразу, коли хтось редагує / створює щось, буде ефективним?
Wordpressor

3
Ні, це взагалі не буде проблемою, прихойте інтерфейс користувача та автоматизуйте процес. Зробіть його на збереженні та оновлення гачок повідомлення, робити це вручну було б нерозумно дорого
Tom J Nowell

Том Дж. Ноуелл, це працює як шарм, але у мене є одна серйозна проблема, і я не впевнений, як з цим впоратися - деякі слова почнуться з літер, таких як en.wikipedia.org/wiki/Ą - я не в змозі встановити для них умови. Ось код і пояснення: pastebin.com/cHxbjVFH , чому це відбувається? Я використовую пакет WP, призначений для цієї мови.
Wordpressor

ти говориш про акценти, умлаути тощо тощо? Якщо так, то це те, що саме по собі заслуговує на нове запитання, і це не тривіальне питання. Ймовірно, це також загальне питання PHP, і тому Stack Overflow було б найкращим місцем для його запитання
Tom J Nowell

4

Якщо ви не хочете користуватися кращим методом термінів таксономії, зробіть це:

<ul class="posts">
         <?php 
         global $wpdb; 
         $request = "a" // could be any letter you want
         $results = $wpdb->get_results(
                "
                SELECT * FROM $wpdb->posts
                WHERE post_title LIKE '$request%'
                AND post_type = 'post'
                AND post_status = 'publish'; 
                "
         ); 
         if ( $results ) 
         {
            foreach ( $results as $post ) 
            {
                setup_postdata ( $post ); 
                ?> 
                <li>
                    ... loop stuff here (the_title, the_permalink) ... 
                </li>
                <?php 
            }
         } 
         else 
         {
            ?> 
            <div class="alert">No clubs found for that letter. Please try again, or use the search at the top.</div>
            <?php
         }
         ?>
    </ul>

чи можете ви пояснити, як це працює? чи не поверне це повідомлення, яке містить лист?
Тінінабулятор Zea

це не буде. mysql використовує% як підстановку. однак я ніколи не стикався з $ в mysql запитах. правильно це слід прочитатиWHERE post_title LIKE 'request%'
Бретт

1

Перевірте цю статтю тут: query_post за назвою?

Або ви можете створити помічник попереднього збереження за допомогою PODS 2 фрейму та зберегти першу букву заголовка повідомлення в якомусь полі та використовувати просту умову WHERE.

Або створіть спадне меню (інший pod / contenttype) з усіма літерами та створіть відношення до існуючого типу вмісту публікацій (у розділах 2 це можливо), і все. Отже, перед тим, як зберегти термін у словнику, ви виберіть із випадаючого вікна букву, яку хочете призначити цьому терміну.

У Pods 2 ви можете додати додаткове поле до існуючого типу вмісту публікацій. Цей плагін / фреймворк, який є чимось схожим на CCK + Views в світі Drupal, справді приголомшливий.

Pods 2 дуже корисний плагін.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.