Tag: wpdb

  • [WordPress] เบื้องต้นกับการคิวรี่ข้อมูลจาก database โดยตรง

    [WordPress] เบื้องต้นกับการคิวรี่ข้อมูลจาก database โดยตรง

    ในการเรียกข้อมูลจาก database ของเว็บที่ทำด้วย WordPress นั้น ก็มีวิธีไม่ยากด้วยคำสั่ง query_posts หรือ wp_query แต่ทั้งสองก็เป็นเพียงการเรียกข้อมูลมาเท่านั้น ถ้าเราต้องการเพิ่มข้อมูล ต้องเป็นการเชื่อมต่อโดยตรง ซึ่งจริง ๆ แล้วด้วยตัว WordPress เองก็ได้เตรียมตัวแปรเพื่อให้เราได้ใช้งานไว้แล้ว ด้วยตัว $wpdb ครับ มาดูวิธีการใช้งานมันกันครับ

    วิธีการใช้งาน $wpdb เบื้องต้น

    ในการใช้งานให้เราสั่งเรียกมันขึ้นมาก่อนนะครับ

    [php]
    <?php global $wpdb; ?>
    [/php]

    คราวนี้เวลาเราจะเรียกข้อมูล ก็สามารถสั่งได้ประมาณว่า

    [php]
    <?php $post_count = $wpdb->get_results("select count(*) from $wpdb->posts"); ?>
    [/php]

    แล้วเราจะรู้ได้ยังไง ว่าเราจะเรียกข้อมูลจากที่ไหน from ตัวไหน อันนี้เราต้องมาดู database ของ WordPress ก่อนว่ามีโครงสร้างเป็นอย่างไรนะครับ

    โครงสร้าง Database ของเว็บที่สร้างด้วย WordPress

    [WordPress] เบื้องต้นกับการคิวรี่ข้อมูลจาก database โดยตรง

    จะมีหลัก ๆ อยู่ 11 tables โดยแต่ละ table จะเก็บข้อมูลคร่าว ๆ ดังนี้ครับ

    • wp_comments: เก็บ comment ต่าง ๆ ไว้ โดยเก็บพวกชื่อ อีเมล์ IP ของคนที่มา comment รวมถึงข้อความด้วย
    • wp_commentmeta: เก็บข้อมูลของ comment ว่าสัมพันธ์กันอย่างไร เช่น comment นี้คือ comment ที่เกิดมาจากการตอบ comment ไหน หรือ comment นี้เป็น comment ที่ตอบ post ไหน
    • wp_links: เก็บข้อมูล link ที่เราสร้างไว้ในหัวข้อ Links
    • wp_options: ในหัวข้อ Settings นั้นจะเก็บข้อมูลใน table นี้
    • wp_posts: เวลาสร้าง Post และ Page จะถูกเก็บข้อมูลต่าง ๆ ไว้ที่นี่
    • wp_postmeta: ข้อมูลเสริมของแต่ละ Post หรือ Page อย่างเช่น รูป thumbnail ตัวไหน หรือใน Post นี้แนบ File อะไรไว้บ้าง
    • wp_terms: เก็บข้อมูล Categories และ Tags สำหรับ Post และ Page
    • wp_term_relationships: ส่วนอันนี้จะจับความสัมพันธ์กันในระหว่าง Post, Page, Categories และ Tags
    • wp_term_taxonomy: เก็บรายละเอียด (Description) ที่เราใส่ให้ Tags, Links และ Categories
    • wp_users: เก็บข้อมูล User ที่ Register ไว้
    • wp_usermeta: เก็บข้อมูลของแต่ละ User เช่น ชื่อ, สิทธิในการใช้งาน เป็นต้น

    เมื่อเราทราบโครงสร้างแล้ว ก็ไม่ยากที่จะทำการเรียกข้อมูลที่เราต้องการมาใช้งานได้แล้วละครับ

    ตัวอย่างการใช้งาน

    สมมติเราต้องการเรียก title ใน post ล่าสุดมาแสดงนะครับ

    [php]
    <?php
    global $wpdb;
    $last_title = $wpdb—>get_var("SELECT post_title FROM $wpdb->posts WHERE post_status = ‘publish’ ORDER BY post_date DESC");
    echo $last_title;
    ?>
    [/php]

    ถ้าต้องการเรียกข้อมูลอะไรมากกว่านี้ ก็ลองไปดูเพิ่มเติมเอานะครับ Class Reference/wpdb 😛

    ปล. จะเห็นว่าตรง from เราจะใช้ $wpdb->posts ซึ่งถ้าเป็น table อื่นก็จะเรียกแบบนี้ครับ wp_comments ก็เป็น $wpdb->comments