wordpress - ショートコードからのWordpressストリッピング
3 に答える
ショートコード ハンドラ関数の戻り値は、ショートコード マクロの代わりに投稿コンテンツ出力に挿入されます。エコーではなく return を使用することを忘れないでください。エコーされたものはすべてブラウザーに出力されますが、ページの正しい場所には表示されません。
ショートコードは、wpautop および wptexturize ポスト フォーマットが適用された後に解析されます (ただし、2.5.0 と 2.5.1 の違いについては以下の注を参照してください)。これは、ショートコード出力 HTML に自動的にカーリー クォーテーションが適用されたり、p および br タグが追加されたりしないことを意味します。ショートコード出力をフォーマットしたい場合は、ショートコード ハンドラーから出力を返すときに wpautop() または wptexturize() を直接呼び出す必要があります。
wpautop はショートコードの構文を認識し、1 行に単独で存在するショートコードを p または br タグでラップしないようにします。この方法での使用を意図したショートコードは、出力が p や div などの適切なブロック タグでラップされていることを確認する必要があります。
これが役立つかどうかはわかりませんが、外側の引用符を単一引用符に変更してみましたか?
[jasminesays quote='blah <a href="#">de</a> blah']
または内側の引用符を削除しますか?
[jasminesays quote="blah <a href=#>de</a> blah"]
ショートコードに url オプションを追加しないのはなぜですか?
追加するようなもの:
function mm_jasmineSays( $atts ) {
extract( shortcode_atts( array(
"quote" => '',
"url" => '',
), $atts ) );
そして追加
<a href="'.$url.'"> <h2>Jasmine says...</h2></a>
多分それはうまくいくかもしれません..または代わりに $output を使用すると、次のように返されます。
global $post;
$output .= '<div class="jasmine-says">';
if($quote !== '')
$output .= '<a href="'.$url.'"><h2>Jasmine says...</h2>';
$output .= '<div class="jasmine-says-quote">'
$output .='<p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-1.jpg" /></p>';
$output .='<p class="quote">'.$quote.'</p>';
$output .='<p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-2.jpg" /></p>';
$output .='</div>';
$output .='</div>';