私は最近WordPressで自分の画像にキャプションを追加しました。そして今<p></p>
タグの後に空の<img>
タグがあります。それは私のスタイルを破った。
誰でもそれを削除する方法を言うことができますか?
助けてくれてありがとう。
wpautop
を削除する:これは wpautop
からの可能性が最も高いです。これを修正するには、まずテーマのfunctions.php
ファイルに次のコードを書きます。
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
それでも問題が解決しない場合、<p></p>
がデータベースに入ったことを意味する可能性があります。{または[caption][/caption]
ショートコード内に空の改行があります。投稿に行き、WordPressエディタのText
モードから<p></p>
またはempty new line
を編集してください。
それはあなたの問題を解決するはずです。
あなたは<p></p>
を this answer が示唆するように隠すためにCSS CODEを使うことができます。しかし、その方法では、それを作成してCSSで完全に非表示にするという点で、HTMLの中にはまだ存在します。&無意味ですその場合は、上記のCODEを使用して削除することをお勧めします。
ただし、何らかの理由でwpautop
を保持したい場合(サイト内の他の場所での書式設定に使用している可能性があります)は、キャプション内の<p></p>
タグのみを次のCSSでターゲティングできます。
.wp-caption > p:empty {
display: none;
}
これはあなたのサイトの他の場所にwpautop
のフォーマットを保ち、同時にキャプションの表示問題を解決します。
これはdo_shortcode_tag
フックで行うことができます。
function remove_empty_wp_caption_text($output, $tag) {
if ($tag === 'caption') {
$output = str_replace('<p class="wp-caption-text"> </p>', '', $output);
}
return $output;
}
add_filter('do_shortcode_tag', 'remove_empty_wp_caption_text', 10, 2);
このアプローチの良いところは、[caption]
というショートコードが呼び出されない限り、関数が実行されないことです。
str_replace
を使用してpタグをthe_content
filterに置き換えることでこれを削除することもできます。
function wpse256087_content_filter($content) {
$content = str_replace( '<p></p>', '', $content );
return $content;
}
add_filter( 'the_content', 'wpse256087_content_filter' );
WordPressのネイティブ機能を上書きすることはお勧めできません。代わりに、CSSを使って空の要素を隠すことができます
p:empty {
display: none;
}
これは空の要素になります。