18
Feb

How to สร้าง Shortcode สำหรับ bbPress และวิธีการซ่อนเนื้อหาให้เห็นเฉพาะสมาชิกเท่านั้น

Category: Blog / 102 views

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

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

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

อย่างแรก เรามาทำให้ bbPress รองรอง Shortcode กันก่อนครับ โดยให้เราเขียนคำสั่งนี้ลงในไฟล์ functions.php ของธีมที่เราใช้งานอยู่นะครับ

add_filter( 'bbp_get_forum_content', 'do_shortcode' );
add_filter( 'bbp_get_reply_content', 'do_shortcode' );

โดยโค้ดด้านบนก็เป็นการบอกให้ bbPress พร้อมจะใช้งาน Shortcode ที่เราจะเขียนแล้วนะ จากนั้นก็มาเริ่มต้นเขียน Shortcode ของเราเลยครับ ซึ่งในเคสนี้ผมจะยกตัวอย่างการสร้าง Shortcode ที่มีการเปิด Tag ปิด Tag ในตัว โดยเป็นการซ่อนเนื้อหา URL ออกจากคนทั่วไปที่ไม่ใช่สมาชิกเว็บไม่ให้เห็นเนื้อหานี้

เช่นเดิมครับ เราเขียนคำสั่ง PHP ลงในไฟล์ functions.php

function hide_shortcode( $attr, $content = null ) {
if ( is_user_logged_in() ) { /* เช็คก่อนว่าผู้ใช้งานเป็นสมาชิกหรือไม่ ถ้าใช่แสดงเนื้อหาที่ซ่อนไว้ */

return '<a href="'. esc_url($content) . '" target="_blank">'.esc_url($content).'</a>';
} else { /*ถ้าไม่ใช่ ให้แสดงข้อความเตือน */
echo "<div class='notice'>กระทู้นี้มีเนื้อหาบางส่วนที่ดูได้เฉพาะสมาชิกเท่านั้น กรุณาสมัครสมาชิกหรือเข้าสู่ระบบเพื่อดูเนื้อหานี้</div>";
}
}
add_shortcode('hide', 'hide_shortcode');


ตรงบรรทัด add_shortcode ตรงคำว่า hide นั่นแหละครับ คือคำสั่ง shortcode ที่เราจะเอาไปใช้งาน คือ

[hide]https://www.buksohn.com[/hide]

ถ้าหากเราอยากใช้ชื่ออื่น เช่น อยากใช้ shortcode ว่า

[hideme]เนื้อหาที่จะซ่อน[/hideme]

ตรงบรรทัดนี้ก็แก้เป็นแบบนี้ครับ

add_shortcode('hideme', 'hide_shortcode');

และนี้ก็เป็นตัวอย่าง Output ครับผมในกรณีที่ User เป็นสมาชิก

ส่วน user ที่ไม่ได้เป็นสมาชิก ก็จะมีข้อความเตือนดังนี้ครับ (พวกสีพื้นหลัง ก็แก้ CSS ตามต้องกันนะครับ)


Phraisohn Siripool is a Graphic Designer and Website Developer. Contact Buksohn for Your Business Endeavours