web-dev-qa-db-ja.com

カスタムタイトルウィジェット/ HTMLエンコーディング

私はウィジェットのタイトルからHTMLを取り除くWordPressの問題を戦った最初の人ではありません。あなたが追加することを可能にするそこにそこにカスタムウィジェットの数があります。タイトルへのリンクが、私は特にbrとspanタグを追加する機能を望んでいました。

私はこのチュートリアルに遭遇しました: http://ponderwell.net/2011/05/how-to-use-html-in-wordpresss-widgets-title/ ネイティブのWP default-widgets.phpに基づいてカスタムウィジェットファイルを作成する方法を説明します。

それで私はほとんどそこにたどり着きますが、彼の方法を直接使うこと、あるいは既存のウィジェット(Enhanced Text Widget)をカスタマイズするためにそれを適応させることの両方で、正しいHTMLエンコーディングの代わりに<br>と<span>の出力を得ます。私はコメントの誰かがhtml_entity_decode()に言及していくつかのことを試みたことを見ました、しかし正直に言って私はPHPをうまく動かせるほど十分に知りません。

これをfunctions.phpとcustom_widgets.phpファイルの両方で行わなければならない場合は、その作業を行いますが、移植性のために、ウィジェットプラグインとしてタスクを実行することをお勧めします。

ここまで来た今、これらのタグを正しくエンコードするためには特に何が必要ですか。私はここでクリスによって提供された解決策を見つけました: ウィジェットタイトルのフィルタされていないhtmlは働かない 、しかし明らかにそのコードを正しい場所に置いていません。 (Amy自身の自己解決策をfunctions.phpで機能させることはできましたが、それが素晴らしい方法であるかどうかはわかりません……)

TIA.

1
Tim Gallant

ご存知のとおり、HTMLタグはウィジェットのタイトルには機能しません。しかし、それを使用するための回避策があります。私が知っている最善のアプローチは、タイトルにショートコードを使用することです。だから、brとspanを使用するための、以下は解決策です -

add_filter('widget_title', 'do_shortcode');

add_shortcode('br', 'wpse_shortcode_br');
function wpse_shortcode_br( $attr ){ return '<br />'; }

add_shortcode('span', 'wpse_shortcode_span');
function wpse_shortcode_span( $attr, $content ){ return '<span>'. $content . '</span>'; }

add_shortcode('anchor', 'wpse_shortcode_anchor');
function wpse_shortcode_anchor( $attr, $content ){ 
    return '<a href="'. ( isset($attr['url']) ? $attr['url'] : '' ) .'">'. $content . '</a>'; 
}

これらの行をfunctions.phpファイルに追加するだけです。

使用法:

投稿コンテンツでのショートコードの使用と同様に、ウィジェットのタイトルでも使用します。
[br]
[span]something[/span]
[anchor url="http://domain.com/"]something[/anchor]

一号

ほとんどのウィジェットはウィジェットタイトルwidget_titleでフィルタを使用しますが、カスタムウィジェットによってはこのフックを適用しない、または使用しない場合があります。それで、それらのウィジェットでは、この方法は機能しないでしょう、そして私は他の方法がうまくいかないと思います。

1
Shazzad