การสร้าง Shortcode ใช้เองใน WordPress

ในเวิร์ดเพรส  นอกจากเราจะสามารถตกแต่งเนื้อหาด้วย RTE ได้แล้ว  เรายังสามารถใส่ลูกเล่นให้กับเนื้อหาผ่านทาง Shortcode ได้อีกด้วย  ลักษณะจะเป็นคำสั่งที่ระบุอยู่ในแท็กวงเล็บเหลี่ยม  ซึ่งอาจจะมีทั้งแบบแท็กเดี่ยว  หรือเป็นแท็กคู่เปิดปิดก็ได้  เช่น

[myshortcode]

หรือ

[myshortcode] ... [/myshortcode]

หรือสำหรับใครที่ใช้เว็บบอร์ดมาก่อน  อาจจะคุ้นกับมันในชื่อว่า BBCode

ในการสร้าง Shortcode ในเวิร์ดเพรสนั้นเป็นเรื่องที่ง่ายมาก  เพราะว่าเวิร์ดเพรสเองได้เตรียมระบบสำหรับตรวจหา Shortcode และส่งต่อให้ฟังก์ชันทำการแปลผลเอาไว้อยู่เรา  ในกรณีที่เราต้องการเขียน Shortcode ใช้เอง  เราก็เพียงแค่เขียนฟังก์ชันขึ้นมารองรับการทำงานของมัน  ก็เท่านั้น

Read More

เริ่มต้นเขียน Theme ของ WordPress ใช้เอง ตอนที่ 3

สวัสดีครับ  วันนี้ผมกลับมาเขียนเรื่องเกี่ยวกับการทำ Theme ของ WordPress ต่อ  หลังจากที่ดองเอาไว้เกือบสองปี (ครับ  ดองโพสต์นี้นั้นแหละ  ดองไว้เกือบสองปี) สำหรับใครที่มาไม่ทัน  สามารถย้อนกลับไปอ่านได้ตามลิงค์นี้

และสำหรับเนื้อหาในตอนที่ 3 ผมจะพาไปรู้จักกับฟังก์ชันหลักๆ ที่เราใช้กันใน The Loop กันครับ

อะไรคือฟังก์ชันใน The Loop?

ฟังก์ชันของ WordPress ตามความเข้าใจของผมคือจะมีอยู่ 2 ประเภท  คือ 1. กลุ่มที่ใช้ได้เฉพาะใน The Loop เท่านั้น  และ 2. กลุ่มที่สามารถใช้นอก The Loop ได้

Read More

แก้ปัญหา meta_compare ทำงานไม่ถูกต้องใน WordPress

ใน WordPress เราสามารถสั่ง Query โพสต์ออกมาตามค่าใน custom field ได้ (หรือชื่อในเชิงเทคนิคคือ Post Meta) ด้วยการเพิ่มอาร์กิวเมนต์ meta_query ลงไปในขั้นตอนการคิวรี่  อย่างนี้

$args = array(
	'post_type' => "mytype",
	'meta_query' => array(
		array(
			'key' => "mymeta",
			'value' => "myvalue",
			'compare' => "="
		)
	)
);

$myQuery = new WP_Query($args);

ซึ่งตามตัวอย่างข้างบน  จะเป็นการสั่งคิวรี่โพสต์จากโพสต์ไทป์ mytype โดยจะดึงจากโพสต์ที่มีค่า mymeta เท่ากับ myvalue

การคิวรี่นี้จะไม่เกิดปัญหาใดๆ ตราบใดที่เป็นการคิวรี่ตาม string ธรรมดา  แต่เมื่อใดก็ตามที่ต้องการเปรียบเทียบในลักษณะอื่นที่นอกเหนือจากข้อความธรรมดา (เช่นตัวเลข  หรือวันที่) การคิวรี่ด้วย meta compare ธรรมดาแบบนี้จะมีปัญหาทันที  เนื่องจากตัว WordPress จะมอง custom field เป็น string ธรรมดาๆ เป็นค่าปริยาย

Read More

เขียน AJAX บน WordPress

ปกติเวลาที่เราเขียน AJAX กัน  การรับส่งข้อมูลระหว่างเบราเซอร์และเซิร์ฟเวอร์  จำเป็นจะต้องมี handler ตัวหนึ่งคอยจัดการ (ก็ที่เราสร้างออพเจ็กท์ xhr เรียกไปหาสคริปท์บนเซิร์ฟเวอร์สักตัวหนึ่ง  เช่น xhr.php นั่นแหละ) ซึ่งหลายๆ คนที่เป็นมือใหม่เวิร์ดเพรส  อาจจะมีคำถามว่า แล้วบนเวิร์ดเพรสมันทำยังไง?

ในการทำ AJAX บนเวิร์ดเพรสนั้น เวิร์ดเพรสจะเตรียม action ตัวหนึ่งเอาไว้ให้เรา  นั่นคือ wp_ajax  วิธีใช้ของมันก็คือจัดการ add_action(); เข้าไป  โดย action ที่จะใช้คือ wp_ajax_xxxx โดย xxxx จะเป็นชื่ออะไรก็ได้ที่เราต้องการใช้  โดยชื่อนี้จะเอาไว้เรียกหาแอคชันนี้ด้วย admin-ajax.php (ผมรู้ว่างง  เดี๋ยวอ่านๆ ไปจะเก็ตเอง)

เอาล่ะ  มาดูโค๊ดกัน

<?php
	add_action("wp_ajax_myxhr", "myajax");
	function myajax(){
		...
		die();
	}
?>

อันนี้คือการ add_action(); ปกติของเวิร์ดเพรส  โดยพารามิเตอร์แรกจะเป็นชื่อแอคชัน  และพารามิเตอร์ที่สองจะเป็นชื่อฟังก์ชันที่เราจะใช้  สังเกตุว่าเราจะใส่ die(); ลงไปที่ท้ายฟังก์ชันด้วย  เพราะว่าถ้าเราไม่สั่ง die(); ตัว admin-ajax.php มันจะพ่นค่าต่อท้ายออกมา (เอาจริงๆ ผมก็ไม่รู้เหมือนกันว่ามันคือค่าของอะไร) ทำให้ xhr ของเราเจ๊งได้ครับ  อย่างนี้

Read More

เริ่มต้นเขียน Theme ของ WordPress ใช้เอง ตอนที่ 2

จากตอนที่แล้ว ผมพาไปดูโครงสร้างไฟล์และคอนฟิกธีมเบื้องต้นใน?เริ่มต้นเขียน Theme ของ WordPress ใช้เอง ตอนที่ 1 กันไปแล้ว ตอนนี้จะพาไปดูกับส่วนที่สำคัญที่สุดในธีม นั่นคือ The Loop ครับ

ก่อนอื่นต้องเข้าใจวิธีการแสดงเนื้อหาของ WordPress นิดนึง คือใน WordPress จะใช้วิธีแสดงผลข้อมูลอย่างเดียวกันหมด คือผ่านการลูปครับ ซึ่งการลูปแต่ละรอบ WordPress จะปรับค่าตัวแปรต่างๆ ให้ตรงกับเนื้อหาขณะนั้นให้อัตโนมัติ เราสามารถเรียกแสดงผลผ่านฟังก์ชั่นต่างๆของเวิร์ดเพรสะ หรือตัวแปร $post ได้เลย

โครงสร้างพื้นฐาน The Loop

จริงๆแล้ว The Loop นั้นก็คือ while ปกติของ php นั่นเองครับ วิธีใช้ก็ประมาณนั้น

while (have_posts()) :
	the_post();

	.. ใส่โค๊ดอื่นๆตรงนี้ ..
endwhile;

Read More