WordPress : PHP connect Wordpress mysql database
PHP connect and query from Wordpress mysql database
ตั้งชื่อเป็นภาษาอังกฤษสักหน่อยสำหรับหัวข้อนี้ เพราะก่อนจะทำได้ผมก็ใช้เวลาหาข้อมูลเยอะอยู่เหมือนกัน
โดย Keyword ที่ใช้ค้นหาก็คือ PHP connect Wordpress mysql database
โจทย์คือ จะมีการดึงข้อมูลจาก ฐานข้อมูลของ WordPress มาแสดงผล ตามที่เราต้องการ นั้นหมายถึงว่าเราจะต้องทำการเชื่อมต่อกับฐานข้อมูลเดิมที่มีมาอยู่แล้ว
ด้วยความรู้ของการทำ shortcode วันนี้เราจะมาแทรกการเชื่อมต่อกับฐานข้อมูลของ Wordpress แล้วก็นำมาออกมาแสดง
เรามาดูกันว่าจะทำ function นี้อย่างไรบ้าง
1. เขียน function shortcode ที่ต้องการ ได้ตัวอย่างดังนี้
function show_post_limit_record($atts){
$arrCode = $atts;
$show_record = $arrCode[0];
global $wpdb;
$table_prefix = $wpdb->prefix;
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($conn,"utf8mb4");
$sSql ="SELECT post_title FROM " . $table_prefix . "posts";
$sSql .= " WHERE post_status = 'publish' AND post_title<>''";
$sSql .= " ORDER BY post_date DESC";
$sSql .= " LIMIT " . $show_record;
$result = mysqli_query($conn,$sSql);
if ($result){
$arrData = array();
while ($rows = mysqli_fetch_array($result)) {$arrData[] = $rows;}
}else{
$message = 'ชุดคำสั่งของ : ' . $sSql . " ไม่ถูกต้อง";
die($message);
}
$recordCount = mysqli_num_rows($result);
mysqli_close($conn);
if($recordCount>0){
for($iLoop=0;$iLoop<$recordCount;$iLoop++){
$return_text .= ($iLoop+1) . " " . $arrData[$iLoop][0] . "
";
";
}
}
return $return_text;
}
add_shortcode('post_limit', 'show_post_limit_record');
2. เรียกใช้งาน shortcode
จากตัวอย่างคิวรี่ ด้านบน ผมจะดึงข้อมูลของ table post มาแสดง โดยสิ่งที่ผมต้องการคือ ข้อมูลที่ต้องการนำมาแสดง เช่น แสดงเพียง 30 รายการ เป็นต้น
ผมจะใส่ shortcode ได้เป็น
[post_limit "0,30"]
3. ผลลัพท์ที่ได้
ก็แสดงรายการของ post_title มาเพียง 30 รายการ โดยเรียงจากวันที่ ล่าสุด
ลองนำไปประยุกต์ใช้ดูนะครับ เผื่อเป็นประโยชน์สำหรับคนที่อยากจะ เขียนระบบของตัวเองขึ้นมา แต่ยังคงใช้ WordPress ในการขับเคลื่อน
ทำอันนี้ได้ ต่อไปก็ไม่ยากแล้วใช่ไหมครับ
มาเป็นเพื่อนกันครับ บนช่องทาง Social ด้านล่างนี้ครับ
--------------------------► LINE@ : @siamfocus.com
► Facebook : fanpage.siamfocus
► Twitter (X) : siamfocus
► Linkedin : taam-siamfocus
► Instagram : iamtaam
► Youtube : SiAMFOCUS
► Tiktok : @taamsiamfocus
--------------------------