หลังจากที่ 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 Reply