วิธีดึง post ล่าสุดของ wordpress มาแสดงนอก blog

สอน wordpress
สอน wordpress

วิธีดึง post ล่าสุดของ wordpress มาแสดงนอก blog



วิธีดึง post ล่าสุดของ wordpress มาแสดงนอก blog
Wordpress เป็น CMS ทักมักจะนิยมนำไปใช้ในการทำ blog สำหรับเขียนข่าวหรือบทความของเว็บไซต์ ซึ่งมักจะเป็นเนื้อหาที่แยกส่วนจากเว็บไซต์หลัก เว็บไซต์หน้าแรกอาจจะถูกพัฒนาขึ้นมาโดยไม่ใช้ CMS และแยกส่วนข่าวสาร ส่วนที่มีเนื้อหายาว ๆ ออกไปไว้ในส่วนของบล็อกและใช้ CMS อย่าง wordpress ในการจัดการข้อมูลแทน


ปัญหาคือ เมื่อเราแยกส่วนระหว่าง wordpress และเว็บไซต์หลักซึ่งถูกพัฒนาขึ้นมาจากระบบที่แตกต่างกัน ทำให้เราไม่สามารถใช้งานคำสั่งต่าง ๆ หรือถึงจะใช้ได้ก็อาจจะติดปัญหาบางอย่าง ทำให้ไม่สามารถแสดง post ล่าสุดของ wordpress ในหน้าเพจหลักที่แยกระบบกันได้ อีกวิธีหนึ่งที่เราจะสามารถโหลด post ล่าสุดของ wordpress มาแสดงได้ก็คือการ query ตรง ลองมาดูกันครับว่าจะสามารถเขียนคำสั่งได้อย่างไรบ้าง

โหลด post ล่าสุดมาแสดงนอก wordpress

หลักการทำก็ง่าย ๆ ครับคือเข้าถึงฐานข้อมูลของ wordpress โดยตรงเลย แต่โดยตรงปกติแล้วฐานข้อมูลของ wordpress ก็ค่อนข้างซับซ้อนพอสมควร เราสามารถใช้การ query เพียงครั้งเดียวและ loop เพื่อแสดง post ของ wordpress ได้เลยดังนี้


คำสั่งสำหรับเชื่อมต่อฐานข้อมูลของ wordpress

$hostname = "localhost";
$username = "db username";
$password = "db password";
$dbname = "db name";

mysql_connect($hostname, $username, $password) or die("Unble to connect Database");
mysql_query("SET NAMES UTF8");
@mysql_select_db("$dbname") or die("Unble to connect database");



จากนั้นก็ทำการ query ข้อมูลและ loop เพื่อแสดง post ตามจำนวนที่ต้องการ

$result = mysql_query('SELECT p1.*, wm2.meta_value FROM wp_posts p1 LEFT JOIN
					wp_postmeta wm1 ON (
					wm1.post_id = p1.id
					AND wm1.meta_value IS NOT NULL
					AND wm1.meta_key = "_thumbnail_id"
					)
					LEFT JOIN wp_postmeta wm2 ON (wm1.meta_value = wm2.post_id AND wm2.meta_key = "_wp_attached_file"
					AND wm2.meta_value IS NOT NULL) WHERE p1.post_status="publish" AND p1.post_type="post"
					ORDER BY p1.post_date DESC');
$i = 0;
$max_post = 5;					
while ($i<$max_post){
		$row = mysql_fetch_array($result);
		$post_date = $row['post_date'];
		$post_title = $row['post_title'];
		$post_thumbnail = $row['meta_value'];
		$link = $row['guid'];
		$post_content = $row['post_content'];
		$content = explode('<!--more-->',$post_content);
        $i++;
}



อธิบายตัวแปรเพิ่มเติม
$max_post คือจำนวน post ที่ต้องการดึงมาแสดง
$post_date คือวันที่ของ post ที่ถูกสร้าง
$post_title คือหัวข้อของ post นั้น
$post_thumbnail คือรูปของ post หรือ featured image ให้ชี้ไปที่โฟลเด้อ uploads ของ wordpress
$link คือ url ที่จะพาไปหน้าเนื้อหาของ post
$content คือเนื้อหาแบบย่อที่เรากำหนดไว้ ที่คั่นด้วยแท็ก more

ถ้าต้องการเนื้อหาแบบเต็ม ก็ใช้ตัวแปร $post_content แทน