web-dev-qa-db-ja.com

画像が<p>タグで囲まれないようにする方法

私は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>タグでラップされます。何か案は?

1
Elliott Klein

これは、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');
1
honk31

(画像だけでなく)コンテンツ全体から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')
0
mukto90