根据@nickfmc的评论,这里是最新WordPress的修订版本,它在过滤器上使用了正确的优先级,并且还修复了regex的一些问题。
注意:最好将每个块格式的短代码保留在自己的行上(WYSIWYG编辑器中的单独段落)。
<?php
add_filter(\'the_content\', function ($content) {
$blocks = \'columns|column\';
$replace = [
"/(?:<p>)?\\[($blocks)(\\s[^\\]]+)?\\](?:<\\/p>|<br\\s*\\/?>)?/" => \'[$1$2]\',
"/(?:<p>)?\\[\\/($blocks)\\](?:<\\/p>|<br\\s*\\/?>)?/" => \'[/$1]\',
];
return preg_replace(array_keys($replace), array_values($replace), $content);
}, \'10.1\');
当然,更换
$blocks
具有您自己的短代码的变量。