コンテンツを投稿するために自動的に<br>タグを追加するWordPressを停止します


26

<br>WordPressテキストエディターでリターンを追加するときにWordPressが自動的にタグを挿入しないようにする方法はありますか。

コードエディターのように動作して、コードを好きなように構成し、読みやすくすることができます。

エディターで使用しているコードは次のとおりです。

[one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third]

読みやすく編集しやすいように、このように構成したいと思います。

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

ただし、これを行う<br>と、投稿コンテンツに不可視のタグが追加され、ページのレイアウトが台無しになります。


すべての場所でタグを削除します、またはそれらのショートコードのみを削除しますか?
シア14年

ここに私の答えをご覧ください。wordpress.stackexchange.com/questions/55782/...
Chiedo

回答:


25

多くの場合、シアによる答えは理想的ではありません。

  • <br>, <p>などからすべてを削除したくない。上記のコードが削除するWPビジュアルコンポーザーのデフォルトの動作として使用したい
  • 多くの場合、これはWPのデフォルトのコア動作を変更するため、「コアをハッキングする」と見なされます-たとえば、そのようなことはThemeForestに渡されません

ご覧のとおり、主にショートコードに問題があります。これにアプローチする正しい方法は、デフォルトの動作を変更する(コアをハックする)のではなく、コンテンツをフィルタリングすることです。そのため、フィルターを追加し、変数に次のようにフィルターするショットコードの配列を渡します。

function the_content_filter($content) {
    $block = join("|",array("one_third", "team_member"));
    $rep = preg_replace("/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/","[$2$3]",$content);
    $rep = preg_replace("/(<p>)?\[\/($block)](<\/p>|<br \/>)?/","[/$2]",$rep);
return $rep;
}
add_filter("the_content", "the_content_filter");

内部のコンテンツはフィルタリングされるため、ショートコード<br>, <p>などはなくなりますが、コンテンツの他の部分(たとえば、ユーザーが作成したWPエディターの標準テキスト)には、WPの完全な機能が引き続きあります。

参照:

  1. the_content WPフィルター
  2. 正規表現「翻訳者」
  3. PHP関数に参加する
  4. preg_replace PHP関数

私のプロジェクトでは完璧に機能しました。素晴らしい、途方もない、素晴らしい、素晴らしい.....とても素晴らしい!
arefin2k

@Borekこれは素晴らしいですし、本当にうまくいくようです(+1)が、あなたの答えを改善するために、それが何をしているのか説明できますか?物事の見地から、ニアコードとショートコードからタグを削除<p><br>ますが、正確にはわかりません(私のREGEXスキルは間違いなくスクラッチではありません)。それが私たちのために何をするのかを説明してもらえますか? one_thirdteam_member
dKen

@dKenそれはまさにあなたが書いたものをやっています。正規表現は別として、コンテンツはWPフィルターthe_contentに組み込まれているため、非常に簡単です。フィルタリングする内容(ブロック)と方法(rep)を指定する関数を介してフィルタリングするコンテンツを提供する必要があります。参照を追加したので、各関数とフィルターをチェックして、これをよりよく理解してください。より多くのショートコードを追加するとして、あなたは、単にのようにそれにショートコード名を追加することにより、$ブロックアレイを拡張する必要があるjoin("|",array("one_third", "team_member", "next_one", "another_one", "one_more"));
ボレック

...プロ開発者はよくやったと言った。賛成。
フュージョン27

参考までに、これはページが表示されたときにのみ機能します。ただし、エディターでは、通常どおり、不要な<p>と<br>が表示される場合があります。
-MarsAndBack

13

このwpautop()関数は<p><br>改行を保持するためにコンテンツにタグを追加します。これらのタグを自分で追加する場合は、この機能を投稿コンテンツに適用するフィルターを削除できます。

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

自動パラガラフ作成(<p>タグの挿入)を維持し、追加の<br>タグを削除するだけの場合は、代わりに次のコードを使用できます。

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

function wpse_wpautop_nobr( $content ) {
    return wpautop( $content, false );
}

add_filter( 'the_content', 'wpse_wpautop_nobr' );
add_filter( 'the_excerpt', 'wpse_wpautop_nobr' );

このコードの配置場所がわからない場合は、このリンクを参照してください。


3

プラグイン「Do n't Muck My Markup」をインストールします。

これは、自動車の挿入不能に各ページにあるチェックボックスオプション追加<p><br>タグを。

このサイト全体でこれを行うオプションもあります。


1

おそらくそれは混乱するテキストエディターです。これは私がやったことです:

TinyMCEを使用しています。テキストエディターの設定で、「<p>」および「<br />」タグの保存を停止してHTMLエディターで表示する」のチェックを外しました。私のために働いた。


0

do_shortcode()フィルターを必要とする他のコンテンツがない限り、コンテンツ内にあるのがショートコードだけである場合、単純に使用できます。

コンテキストはわかりませんが、ループ内にいる場合:

echo do_shortcode($post->post_content);


0

Borekの答えは、生のHTMLを作成する私のユースケースでは機能しませんでした。

そのために、コードスニペットプラグイン(実行する任意のPHPスニペットを簡単に追加できます)を使用して、[html][/html]ショートコードのスニペットを作成しました。このショートコードの素晴らしい点は、トグルwpautopプラグインと互換性があることです。これにより、投稿全体の自動挿入<br><p>タグの無効化が可能になります。どちらでも使用できます。

function html_shorttag_filter($content) {
  // Based on: https://wordpress.org/plugins/lct-temporary-wpautop-disable-shortcode/
  $new_content = '';
  $pieces = preg_split('/(\[html\].*?\[\/html\])/is', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
  // don't interfere with plugin that disables wpautop on the entire page
  // see: https://plugins.svn.wordpress.org/toggle-wpautop/tags/1.2.2/toggle-wpautop.php
  $autop_disabled = get_post_meta(get_the_ID(), '_lp_disable_wpautop', true);
  foreach ($pieces as $piece) {
    if (preg_match( '/\[html\](.*?)\[\/html\]/is', $piece, $matches)) {
      $new_content .= $matches[1];
    } else {
      $new_content .= $autop_disabled ? $piece : wpautop($piece);
    }
  }
  // remove the wpautop filter, but only do it if the other plugin won't do it for us
  if (!$autop_disabled) {
    remove_filter('the_content', 'wpautop');
    remove_filter('the_excerpt', 'wpautop');
  }
  return $new_content;
}
// idea to use 9 is from: https://plugins.svn.wordpress.org/wpautop-control/trunk/wpautop-control.php
add_filter('the_content', 'html_shorttag_filter', 9);
add_filter('the_excerpt', 'html_shorttag_filter', 9);

0

この関数は、ショートコードの<p><br>タグのみを削除します。

function bnd_fix_shortcodes_extra_line_break( $content ){
  $array = array (
    '<p>['    => '[',
    ']</p>'   => ']',
    ']<br />' => ']'
  );
  $content = strtr( $content, $array );
  return $content;
}
add_filter('the_content', 'bnd_fix_shortcodes_extra_line_break');

それはまた、すべてのケースに影響[して]いるではないショートコールの一部として使用されます。
fuxia

0

コードハックに精通していないか、プラグインを使用したくない場合は、これを行うことができます。

1)WPページからすべての現在のコードをコピー(テキストエディター) ここに画像の説明を入力してください

2)次にメモ帳に貼り付けて、引き続き編集が必要です(短いコード、htmlコードまたはcssコードを追加)

3)メモ帳からWPページの同じ画面に貼り付けをコピー(テキストエディター)

4)同じWPページの右側にある[更新]ボタンを押して、ページを公開します

ここに画像の説明を入力してください

5)最後にライブサイトでプレビューします

ここでのコツは、この特定のページの[ビジュアルエディター]に切り替えないで、[p]または[br]の自動追加が行われないようにすることです。


-3

非常に簡単な解決策:ワードプレスエディターで新しい行を使用しないでください。はい、新しい行が明確になります。ただし、この場合、ブレークは許容できるほど理解可能でない場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.