แสดงภาพตัวอย่างอัตโนมัติกรณีไม่ได้ตั้ง Featured Image

ปกติแล้วเวลาเราออกแบบธีมเวิร์ดเพรส  มักจะออกแบบมาเผื่อให้มี Featured Image (อีกชื่อคือ Post Thumbnail) กันอยู่แล้ว  ปัญหาคือเวลาเอาไปใช้จริงๆ เรากลับไม่ได้ตั้งภาพตัวอย่างให้กับทุกๆ โพสต์  ทำให้มันออกมาหน้าตาพิการๆ ไม่เป็นอย่างที่เราต้องการ  คล้ายๆ กับแบบนี้

โพสต์ไม่มีภาพ Featured Image

โดยปกติที่ผมเจอ  จะใช้วิธีเช็ค if … else กับฟังก์ชัน has_post_thumbnail() กัน  ว่ามีภาพ Featured Image หรือไม่  ถ้าออกมาเป็น false จึงค่อยแสดงภาพที่เตรียมไว้ … โค๊ดมันก็จะรกๆ ประมาณนี้

if(has_post_thumbnail()){
	the_post_thumbnail();
}else{
	echo '<img src="http://placehold.it/390x280">';
}

ครับ  มันรก  จริงๆ แล้วเราสามารถทำให้เหลือแค่ the_post_thumbnail() อันเดียวโดดๆ ได้  ด้วยการใช้ Filter เข้ามาช่วยครับ

Read More

การเรียกใช้ Partial Template ใน WordPress

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

  1. ส่วน header.php
  2. ส่วน footer.php
  3. ส่วน sidebar.php
  4. ส่วน searchform.php

และนอกจากสี่ส่วนนี้แล้ว  เวิร์ดเพรสยังอนุญาตให้เราสร้าง Template Part ขึ้นมาเอง  และเรียกมาแสดงผลผ่านฟังก์ชัน get_template_part();  ได้อีกด้วย

ข้อดีของการใช้ Partial Template

หลายๆ ครั้งที่เราสร้าง Template ให้กับหลายๆ หน้า  และมีบางส่วนที่เป็นโค๊ดซ้ำๆ กัน (เช่นส่วนแสดงชื่อโพสต์และวันที่, ส่วนแสดงเนื้อหา, ส่วนแสดงข้อมูลผู้โพสต์) หากเราสร้างออกมาเป็น Template ปกติ  เมื่อมีการแก้ไขส่วนที่โค๊ดซ้ำๆ กันนี้  เราจะต้องไปแก้ไขในทุกๆ Template ที่เราสร้างไว้  แต่ถ้าหากเราแบ่งโค๊ดส่วนนี้ออกมาเป็น Partial Template เราสามารถที่จะแก้ไขจากไฟล์เดียว  ไม่ต้องวนแก้หลายๆ ที่  และนั่งปวดหัวเช็คว่าแก้ครบหรือยังอีกต่อไป

อีกหนึ่งความสะดวกของการแบ่ง Template ออกแบบส่วนๆ ก็คือเมื่อเราต้องการปิดการแสดงผลบางส่วน (เช่นอยากปิดส่วน Author Info) เราก็แค่ไปคอมเมนต์โค๊ดออกแค่บรรทัดเดียว  แทนที่จะต้องไปคอมเมนต์ HTML ยาวๆ  แถวยังเสี่ยงไปคอมเมนต์ผิด Nest อีกต่างหาก  ซึ่งจุดนี้จะทำให้โค๊ดของเราสะอาดขึ้นด้วยครับ

Read More

รู้จักกับ Child Theme ใน WordPress

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

Child Theme ในเวิร์ดเพรส

ในเวิร์ดเพรส  เราสามารถสร้างธีมลูก (หรือ Child Theme) ให้กับธีมใดๆ ก็ได้  โดยธีมลูกนั้นจะคล้ายๆ กับการเขียนคลาสใหม่ที่ขยายคลาสเดิมใน PHP  คือเมื่อเราเปิดใช้ธีมลูกแล้ว  ในขั้นตอนการหาไฟล์ Template ตาม Hierarchy ของเวิร์ดเพรส  ตัวเวิร์ดเพรสจะมองหาไฟล์เท็มเพลตในธีมลูกก่อน  หากไม่เจอจึงจะไปหาเอาในธีมหลัก

ตัวอย่างเช่นเราต้องการแก้ไขหน้าตาของ single.php (หน้าแสดงโพสต์) เราก็จัดการสร้างธีมลูกขึ้นมา  และสร้างไฟล์ single.php ขึ้นมา  และปรับแต่งหน้าตาใดๆ ให้เรียบร้อยตามต้องการ  เมื่อเวิร์ดเพรสมองหาเท็มเพลท single.php มันจะไปมองหา single.php ในธีมลูก ก่อน  หากไม่เจอ  จึงจะไปหา single.php ในธีมหลัก

Read More

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

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

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

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

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

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