WordPressのショートコードが pタグ で囲まれてしまう

WordpressロゴWordPressのショートコードはfunctions.php等で自作のショートコードを追加して、とても便利なのですが、ショートコードが pタグ で囲まれてしまいます。

例えば、下記のようなショートコードがあった場合

function my_hogehoge($attr) {
	return '<div class="hogehoge">hogehoge</div>';
}
add_shortcode('hogehoge', 'my_hogehoge');
[hogehoge]

実際、コンテンツが出力される際は

<p><div class="hogehoge">hogehoge</div></p>

となってしまいます。

pタグとdivの margin等 で、この pタグ が邪魔な場合があります。

pタグを補完しないようにする解決方法もあるのですが、文章や画像等にはpタグで囲まれてほしいので、the_contentのフィルターフックで下記のような感じで pタグ を削除してあげれば、いい感じに仕上がります。

/**
* shortcodeがpタグに囲まれるfix
*
*/
function shortcode_empty_paragraph_fix($content) {
	$array = array (
	    '<p>[' => '[',
	    ']</p>' => ']',
	    ']<br />' => ']'
	);

	$content = strtr($content, $array);
	return $content;
}
add_filter('the_content', 'shortcode_empty_paragraph_fix');
<div class="hogehoge">hogehoge</div>

ご興味のある方は、一度、お試しください。

※上記の内容は全て自己責任のもとでご参考ください。