web-dev-qa-db-ja.com

ショートコードの内容からwpautopを削除する/バッファリング中の空白を削除する

私はMailchimpプラグイン( http://wordpress.org/extend/plugins/mailchimp/ )を使用していて、それはウィジェットのコードをつかみ、それを内容の中に吐き出すために出力バッファリングを使用するショートコードを持っています。しかし、ウィジェットのコードにはたくさんの空白があるので、the_contentフィルタは(隠れた入力の後のような)無駄な改行と空のpタグを投げています...それを使えなくしています。私は自分自身を追加するためにショートコードを削除していますが、私はwordpressのwpautopフィルタがおかしくなるのを防ぐために何をすべきかわからないです。私の最初の考えは、htmlタグの間の空白を取り除くことでした、しかし、私はそれをすることについてうまくいく方法がわかりません。

理想的には、プラグインは出力バッファリングを使用する代わりに文字列を返すようにしますが、気になるかどうかはわかりません。

6
helgatheviking

これを行うためにプラグインは必要ありません。アクティブテーマのfunctions.phpファイルの最後に3行のコードを追加するだけです。

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99 );
add_filter( 'the_content', 'shortcode_unautop', 100 );
7
MaximOrlovsky

それはいい解決策ですが、望まれないかもしれないすべてのショートコードのためのautopをオフにします。

私はあなたが以下を実行することを可能にするスクリプトを書きました:

include "shortcode-wpautop-control.php";
chiedolabs_shortcode_wpautop_control(array('yourshortcode'));

それはあなたがそれらすべての代わりに特定のショートコードのためにwpautopをオフにすることを可能にします。

もう一度、私はスクリプトを書きました。自己宣伝するつもりはありませんが、将来更新するときにgithubで更新するので、ここにコードを投稿するのは意味がありません。

このスクリプトは https://github.com/chiedolabs/shortcode-wpautop-control にあります。

3
Chiedo

うまくこの仕事をするWordPress機能があります。これを行うためにカスタム関数やプラグインを使用する必要はありません。ショートコードの内容からwpautopを削除するにはshortcode_unautop($pee)関数を使うだけです。ここで$peeは必須の文字列です。

0
Eh Jewel