[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


Posted

in

by

Comments

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

  1. tum Avatar
    tum

    อ่านแล้วงง พอจะแนะนำแบบ step by step ได้มั๊ยครับ ไปใส่ code ที่ไฟล์ไหนหรือว่าที่ส่วนไหนอะ เห้น code แต่ไม่รู้จะเอาไปวางตรงไหน

    1. rabbitinblack Avatar
      rabbitinblack

      มันงงอยู่แล้วละครับ เพราะอันนี้มันคิวรี่โดยตรงเบื้องต้นก็จริง แต่ถ้าเป็นการเขียน theme มันคือ ประยุกต์ใช้งานแล้วครับ

      ถ้าอยากรู้วิธีเบื้องต้น ลองไป search หาพวก query_post ดูครับ

  2. mongmx Avatar

    เนื้อหาดีมากครับ ขอติดตามอ่านต่อไปเรื่อยๆ ครับ

  3. Kumpagun Avatar
    Kumpagun

    หากเราต้องการรู้ว่า แต่ละเมนู มีเมนูย่อยๆ อะไรบ้างต้อง Query ยังไงอะครับ
    ข้อมูลนานแล้วจะมีคนตอบไหมนะ 555555

Leave a Reply to mongmx Cancel reply

Your email address will not be published. Required fields are marked *