แก้ปัญหาการแทรก tag pใน widget เมื่อใช้ gutenberg

แก้ปัญหาการแทรก tag pใน widget เมื่อใช้ gutenberg

หลังจากที่ WordPress มีการอัพเดตเป็น Version 5.8 ได้มีการนำ block ของ gutenberg มาใช้งานกับ widget แทนรูปแบบเดิมที่เคยใช้มา

แก้ปัญหาการแทรก tag pใน widget เมื่อใช้ gutenberg

ทีนี้เราดันมาเจอปัญหาว่า เวลาใช้ block ที่เป็น shortcode มันจะแทรก tag p เข้ามาอัตโนมัติ แล้วตัว shortcode ที่เราสร้างขึ้น มันดันไปตีกับตัว tag p ที่มันแทรกเข้า ทำให้ code กลายเป็นแบบนี้

<p>[shortcode]</p>

เราเลยต้องหาวิธีเอามันออกไป โดยเราไปไล่ code ที่ file

wp-includes/class-wp-block.php

แล้วก็เจอ filter ตัวนี้

$block_content = apply_filters( "render_block_{$this->name}", $block_content, $this->parsed_block );

เมื่อไปค้นต่อ เจอลิงก์นี้

โดยเรานำมาปรับใช้เป็น

add_filter( "render_block_core/shortcode", 'custom_render_block_shortcode', 10, 2);
function custom_render_block_shortcode( $block_content, $parsed_block ) {
  $array = array (
    '<p>[' => '[', 
    ']</p>' => ']'
  );
  $block_content = strtr($block_content, $array);
  return $block_content;
}

Leave a Reply

Your email address will not be published.