私はWordPress 4.2.2を使用していて、wysiwygに画像を追加するたびに、出力された画像を段落タグで囲みます。これらのタグを削除する必要があります。私がオンラインで見つけているように見えるすべては2011年からであり、それはうまくいくようではないようです。
私はfunctions.phpに次のようなものを入れてみました:
function filter_ptags_on_images($content){
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');
何もうまくいかないようです。どうすればこれを達成できますか。
ところで私はACF ProのwysiwygとJointsWPスターターテーマを使用しています、そして、それが違いを生じるならば、私の画像はリンクタグで包まれていません。
1)ACFでwpautop()をフィルタ処理します。
function filter_ptags_on_images($content) {
$content = preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
return preg_replace('/<p>\s*(<iframe .*>*.<\/iframe>)\s*<\/p>/iU', '\1', $content);
}
add_filter('acf_the_content', 'filter_ptags_on_images');
add_filter('the_content', 'filter_ptags_on_images');
もしあなたがそれらの両方を持っているならば、add_filterの後の優先順位でチェックしてみてください。テーマやプラグイン、ACFがあなたをオーバーライドしている可能性があります。
add_filter('acf_the_content', 'filter_ptags_on_images', 9999);
add_filter('the_content', 'filter_ptags_on_images', 9999);
2)wpautop()を編集してください:
<?php
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'custom_wpautop' );
function custom_wpautop() {
// copy wpautop() code at https://core.trac.wordpress.org/browser/tags/4.2.2/src/wp-includes/formatting.php#L373 and add img to the $allblocks variable
}
3)これは1つのタスクに対する多くのコードです。これを試してみてください: https://wordpress.org/plugins/preserved-html-editor-markup-plus
4)これはjavascriptを使って行われるので、達成しようとしている方法ほど良くはありませんが、これを試すことができます。
<script type="text/javascript">
jQuery(document).ready(function($){
$('p > img').unwrap();
});
</script>
5)それがスタイルを混乱させているだけで、マークアップを気にしないのであれば:
<style type="text/css">
p > img {
margin: 0 !important;
}
</style>