私はWordPressが自動的に<img>
タグで<p>
sをラップしないようにしています。私はfunctions.php
でこの推奨スニペットを試しました:
function filter_ptags_on_images($content){ // Remove p tags from around images
return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
}
add_filter('the_content', 'filter_ptags_on_images');
画像が投稿またはページの最初の要素である場合、これは機能しません。画像がテキストの前に来ると、その画像はもう一度<p>
タグでラップされます。何か案は?
これは、the_content内のpタグから画像をアンラップする関数です。
/**
* WP: Unwrap images from <p> tag
* @param $content
* @return mixed
*/
function so226099_filter_p_tags_on_images( $content ) {
$content = preg_replace('/<p>\\s*?(<a .*?><img.*?><\\/a>|<img.*?>)?\\s*<\\/p>/s', '\1', $content);
return $content;
}
add_filter('the_content', 'so226099_filter_p_tags_on_images');
(画像だけでなく)コンテンツ全体からremove<p>
を削除する場合は、これが役に立ちます。
add_filter( 'the_content', 'wpse_226099_remove_p' );
function wpse_226099_remove_p( $content ) {
global $post;
return $post->post_content;
}
それともこれで -
remove_filter('the_content', 'wpautop')