这是一个老问题,但我今天解决了这个问题,并认为我会分享。
就我而言,我基本上想删除所有格式不佳的标签<p>
和<br>
标签,但是您想正确地将它们重新添加,以便短代码中的文本格式正确。
/*
* Half column shortcode
*/
function custom_shortcode_half_column( $atts, $content = '') {
$content = custom_filter_shortcode_text($content);
return '<div class="half-column">'. $content .'</div>';
}
add_shortcode( 'half-column', 'custom_shortcode_half_column' );
/*
* Utility function to deal with the way WordPress auto formats text in a shortcode.
*/
function custom_filter_shortcode_text($text = '') {
// Replace all the poorly formatted P tags that WP adds by default.
$tags = array("<p>", "</p>");
$text = str_replace($tags, "\n", $text);
// Remove any BR tags
$tags = array("<br>", "<br/>", "<br />");
$text = str_replace($tags, "", $text);
// Add back in the P and BR tags again, remove empty ones
return apply_filters('the_content', $text);
}
在我看来,这确实应该是 WordPress 解析简码 $content 参数的默认方式。