แสดงโพสต์ทั้งหมดที่เริ่มต้นด้วยตัวอักษรที่กำหนด?


12

ฉันพยายามสร้างพจนานุกรม Wordpress โดยพื้นฐานแล้วจะมี 26 หน้า (หนึ่งฉบับสำหรับแต่ละตัวอักษร):

ABC ... XYZ

และทุกหน้าจะแสดงโพสต์ทั้งหมดที่เริ่มต้นด้วยตัวอักษรที่กำหนดดังนั้นหลังจากเปิดหน้า "A" มันควรจะแสดงสิ่งที่ชอบ:

ผงะ

ลูกคิด

หอยเป๋าฮื้อ

(... ) สีฟ้า

ฉันคิดเกี่ยวกับประเภทโพสต์ที่กำหนดเองในตอนแรก แต่การสร้างและรักษาประเภทโพสต์ที่กำหนดเอง 26 รายการนั้นดูเหมือนว่าเกินความเป็นจริง

อะไรจะเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการจัดเรียงโพสต์เช่นนั้น แบบสอบถามฐานข้อมูลแยกลูปกับ PHP? ฉันตั้งเป้าที่จะโพสต์หลายพันรายการ (ใช่ต้องเป็น Wordpress :))

คำตอบ:


10

อย่าใช้ประเภทโพสต์ใช้เงื่อนไข taxonomy!

ในการบันทึกให้ตั้งค่าเงื่อนไขวัตถุใน AZ taxonomy โดยใช้ตัวอักษรตัวแรกของชื่อโพสต์ ตรวจสอบให้แน่ใจว่าได้บังคับให้ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กเพื่อความมั่นคง ตรวจสอบให้แน่ใจว่าได้สร้างเงื่อนไขสำหรับตัวอักษรแต่ละตัวและคำสำหรับตัวเลขและสัญลักษณ์ที่ไม่ใช่ตัวอักษรและตัวเลขอื่น ๆ

นี่ควรจะเร็วกว่าการสืบค้นตัวอักษรตัวแรกของแต่ละชื่อโพสต์และมันจะให้อนุกรมวิธานที่คุณสามารถทำได้หลายอย่างเช่นแท็กคลาวด์หรือแท็กวิดเจ็ตคำศัพท์! นอกจากนี้ยังเป็นวิธีที่เร็วกว่ามากในการพิจารณาว่าตัวอักษรใดที่มีการเชื่อมโยงโพสต์และจำนวนโดยไม่บังคับให้ฐานข้อมูลนับด้วยตนเองและคุณสามารถใช้ APIs คำศัพท์มาตรฐาน API ออกจากกล่องเพื่อทำแบบสอบถามที่ซับซ้อนมากขึ้นเช่นการโพสต์ด้วยสระ


นี่เป็นเส้นทางที่เหมาะสมที่สุดที่จะไป อย่างไรก็ตามโปรดจำไว้ด้วยโพสต์นับพัน นี่อาจเป็นงานที่ค่อนข้างยุ่งยาก คุณจะต้องเริ่มค้นหาโพสต์ทั้งหมดที่เริ่มต้นด้วยตัวอักษรแต่ละตัวในขั้นต้นและอัพเดตแต่ละโพสต์ด้วยคำศัพท์อนุกรมวิธานที่เหมาะสมโดยจับคู่กับตัวอักษรตามลำดับ มิฉะนั้นการอัปเดตแต่ละโพสต์ด้วยตนเองอาจใช้เวลาหลายศตวรรษกว่าจะเสร็จสมบูรณ์
Michael Ecklund

ใช่นั่นเป็นข้อเสียอย่างมากโพสต์เหล่านี้จะถูกเพิ่มโดยคนที่ไม่รู้ทั้งหมดและฉันไม่สามารถนับได้เมื่อมันมาถึงการกำหนดอนุกรมวิธานที่ถูกต้องในขณะที่สร้างโพสต์ใหม่ ฉันไม่แน่ใจว่าการค้นหาโพสต์ทั้งหมดและอัปเดตทุกครั้งที่มีคนแก้ไข / สร้างบางสิ่งจะมีประสิทธิภาพหรือไม่
Wordpressor

3
ไม่นั่นจะไม่เป็นปัญหาเลยซ่อน UI และดำเนินการตามกระบวนการโดยอัตโนมัติในการบันทึกและอัปเดตโพสต์ฮุคการทำด้วยตนเองจะมีราคาแพงอย่างไร้เหตุผล
Tom J Nowell

Tom J Nowell มันทำงานได้อย่างมีเสน่ห์ แต่ฉันมีปัญหาหนึ่งที่ร้ายแรงและฉันไม่แน่ใจว่าจะจัดการสิ่งนี้อย่างไร - คำบางคำจะเริ่มต้นด้วยตัวอักษรเช่นen.wikipedia.org/wiki/Ą - ฉัน ไม่สามารถตั้งข้อกำหนดสำหรับสิ่งเหล่านี้ ต่อไปนี้เป็นรหัสและคำอธิบาย: pastebin.com/cHxbjVFHทำไมจึงเกิดขึ้น ฉันใช้ WP pack เฉพาะสำหรับภาษานี้
Wordpressor

คุณกำลังพูดถึงสำเนียงและ umlauts ฯลฯ ฯลฯ ? ถ้าเป็นเช่นนั้นนั่นเป็นสิ่งที่สมควรได้รับคำถามใหม่ทั้งหมดในสิทธิของตนเองและไม่ใช่คำถามที่ไม่สำคัญที่จะถาม เป็นไปได้ว่ามันยังเป็นคำถาม PHP ทั่วไปดังนั้น Stack Overflow น่าจะเป็นสถานที่ที่ดีที่สุดที่จะถาม
Tom J Nowell

4

หากคุณไม่ต้องการใช้วิธีการเงื่อนไข Taxonomy ที่ต้องการให้ทำสิ่งนี้:

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

คุณอธิบายได้ไหมว่ามันทำงานอย่างไร จะไม่ส่งคืนโพสต์ใด ๆ ที่มีจดหมายหรือไม่
Tintinabulator Zea

มันจะไม่ mysql ใช้% เป็นไวด์การ์ด แต่ฉันไม่เคยพบ $ ในการค้นหา mysql อย่างถูกต้องมันควรอ่านWHERE post_title LIKE 'request%'
brett

1

ตรวจสอบบทความนี้ที่นี่: query_post ตามชื่อ?

หรือคุณสามารถสร้างผู้ช่วยล่วงหน้าโดยใช้เฟรมเวิร์ก PODS 2และบันทึกตัวอักษรแรกของชื่อโพสต์ในบางฟิลด์และใช้เงื่อนไข WHERE แบบง่าย

หรือสร้างดร็อปดาวน์ (พ็อดชนิดอื่น / เนื้อหา) ด้วยตัวอักษรทั้งหมดและสร้างความสัมพันธ์กับประเภทเนื้อหาโพสต์ที่คุณมีอยู่ (ในพ็อด 2 เป็นไปได้) และนั่นคือมัน ดังนั้นก่อนที่จะบันทึกคำศัพท์ที่คุณเลือกจากกล่องดรอปดาวน์ตัวอักษรที่คุณต้องการกำหนดให้กับคำนี้

ในพ็อด 2 คุณสามารถเพิ่มฟิลด์พิเศษลงในประเภทเนื้อหาโพสต์ที่มีอยู่ ปลั๊กอิน / เฟรมเวิร์กที่มีลักษณะคล้าย CCK + Views ในโลก Drupal นั้นยอดเยี่ยมมาก

พ็อด 2 เป็นปลั๊กอินที่มีประโยชน์มาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.