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

ในโลกออนไลน์มีวิธีการสื่อสารกันหลากหลายรูปแบบ หนึ่งในเครื่องมือที่มีการใช้งานก็คือการสร้างกระทู้ถามตอบครับ ซึ่งก็เหมาะมากกับองค์กรไม่ได้มีทีม 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 ตามต้องกันนะครับ)

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

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

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

  • คุกกี้เพื่อการวิเคราะห์

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

  • คุกกี้เพื่อปรับเนื้อหาให้เข้ากับกลุ่มเป้าหมาย

    คุกกี้ประเภทนี้จะเก็บข้อมูลต่าง ๆ รวมทั้งข้อมูลวส่วนบบุคลเกี่ยวกับตัวคุณเพื่อเราสามารถนำมาวิเคราะห์ และนำเสนอเนื้อหา ให้ตรงกับความเหมาะสมกับความสนใจของคุณ ถ้าหากคุณไม่ยินยอมเราจะไม่สามารถนำเสนอเนื้อหาและโฆษณาได้ไม่ตรงกับความสนใจของคุณ

บันทึก