web-dev-qa-db-ja.com

Wp caption shortcodeの空の<p> </p>を削除する方法

私は最近WordPressで自分の画像にキャプションを追加しました。そして今<p></p>タグの後に空の<img>タグがあります。それは私のスタイルを破った。

誰でもそれを削除する方法を言うことができますか?

助けてくれてありがとう。

demo 

2
Bao

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を編集してください。

それはあなたの問題を解決するはずです。

代替CSSソリューション:

あなたは<p></p>this answer が示唆するように隠すためにCSS CODEを使うことができます。しかし、その方法では、それを作成してCSSで完全に非表示にするという点で、HTMLの中にはまだ存在します。&無意味ですその場合は、上記のCODEを使用して削除することをお勧めします。

ただし、何らかの理由でwpautopを保持したい場合(サイト内の他の場所での書式設定に使用している可能性があります)は、キャプション内の<p></p>タグのみを次のCSSでターゲティングできます。

.wp-caption > p:empty  {
    display: none;
}

これはあなたのサイトの他の場所にwpautopのフォーマットを保ち、同時にキャプションの表示問題を解決します。

4
Fayaz

これは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]というショートコードが呼び出されない限り、関数が実行されないことです。

0
Jake Bellacera

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' );
0
Tunji

WordPressのネイティブ機能を上書きすることはお勧めできません。代わりに、CSSを使って空の要素を隠すことができます

p:empty  {
    display: none;
}

これは空の要素になります。

0
Maqk