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

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

ทีนี้เราดันมาเจอปัญหาว่า เวลาใช้ 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 comment

Your email address will not be published. Required fields are marked *