ผู้เขียน หัวข้อ: เบื้องต้นกับการคิวรี่ข้อมูลจาก database โดยตรง  (อ่าน 781 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ smf

  • [color=green][i]"ถ้าคุณไม่สามารถอธิบายอย่างง่ายๆ ให้คนอื่นเข้าใจได้แล้วล่ะก็ แสดงว่าคุณยังเข้าใจมันไม่ดีพอ"[/i][/color]
  • Administrator
  • Hero Member
  • *****
  • กระทู้: 1,368
  • พอยท์: 5
    • ดูรายละเอียด
    • pordoo.com
    • อีเมล์
ในการเรียกข้อมูลจาก database ของเว็บที่ทำด้วย WordPress นั้น ก็มีวิธีไม่ยากด้วยคำสั่ง query_posts หรือ wp_query แต่ทั้งสองก็เป็นเพียงการเรียกข้อมูลมาเท่านั้น ถ้าเราต้องการเพิ่มข้อมูล ต้องเป็นการเชื่อมต่อโดยตรง ซึ่งจริง ๆ แล้วด้วยตัว WordPress เองก็ได้เตรียมตัวแปรเพื่อให้เราได้ใช้งานไว้แล้ว ด้วยตัว $wpdb ครับ มาดูวิธีการใช้งานมันกันครับ


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

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

โค๊ด: [Select]
[php]
 <?php global $wpdb?>
 [/php]

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

โค๊ด: [Select]
[php]
 <?php $post_count $wpdb->get_results("select count(*) from $wpdb->posts"); ?>
 [/php]

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


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




จะมีหลัก ๆ อยู่ 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 ล่าสุดมาแสดงนะครับ
โค๊ด: [Select]
[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


ที่มา: http://rabbitinblack.com/2012/08/wordpress-basic-query-database/
« แก้ไขครั้งสุดท้าย: 10 สิงหาคม 2016, 16:32:35 โดย smf »