私のユーザーはスニペットコードをコメントに入れています。私はこのためのショートコードを作成しました:
function post_codigo($atts,$content=""){
return '<code>'.$content.'</code>';
}
add_shortcode('codigo','post_codigo');
問題は、HTMLがコードタグにラップされる前にフィルタされることです。
私はフィルタの前に実行されるショートコードを得ることができれば私は使用できると思います
function pre_esc_html($content) {
return preg_replace_callback(
'#(<code.*?>)(.*?)(</code>)#imsu',
create_function(
'$i',
'return $i[1].esc_html($i[2]).$i[3];'
),
$content
);
}
add_filter(
'the_content',
'pre_esc_html',
9
);
私はここで見つけました。あなたが思うこと?
更新:Ok私のショートコードを次のように変更しました。
function post_codigo($atts,$content=""){
return '<code>'.esc_html($content).'</code>';
}
add_shortcode('codigo','post_codigo');
それでもまだ追加
コード全体を複数のタグに分割します。
Wptexturizeから除外されるショートコードのコレクションである配列$ no_texturize_shortcodesをフィルタリングできます。こうすると、[codigo]
shortcodeタグ内のすべてがテクスチャ化されません。
add_filter( 'no_texturize_shortcodes', 'no_texturize_codigo_shortcode' );
function no_texturize_codigo_shortcode( $excluded_shortcodes ) {
$excluded_shortcodes[] = 'codigo';
return $excluded_shortcodes;
}
ショートコード内のコンテンツはすでにwpautop()
やno_texturize_shortcodes
にフックされている他のフィルタによって既にフィルタされていたので、the_content
フィルタは私には何もしませんでした。 do_shortcode
に関連してthe_content
のフィルタ順序を変更することに頼ったので、2つのうち最初に実行されることを確認できます。方法は次のとおりです。
remove_filter('the_content', 'do_shortcode', 11); // AFTER wpautop()
add_filter('the_content', 'do_shortcode', 9); // BEFORE wpautop()
これはかなりうまくいくように思えますが、これはWordPressがそのtext/html変換を処理する方法へのかなり広範囲の変更であるので私はあなたがそれを注意して使うことを勧めます。あなたが使っているプラグインやショートコードが多ければ多いほど、この変更に関するトラブルに遭遇する可能性が高くなります。
あなたのテーマはあなたの訪問者のコメントを表示するために comment_text()
を使っていますか?
もしそうなら変更してみてください:
<?php comment_text(); ?>
に:
<?php echo do_shortcode(apply_filters('comment_text', get_comment_text())); ?>
これはコメントテキストに "comment_text"フィルタを適用します - 前に それはショートコードを適用します。
これはコメントが表示されているところならどこでもあなたのテーマテンプレートで行われるべきです。
あなたはHTML文字を使用する必要がありますか?
return '<code>'.$content.'</code>';
.