web-dev-qa-db-ja.com

ショートコードだがイコール記号なし?

私はこのようにしてショートコードを作成することを認識しています。

function font_fam($atts, $content = null){ 
extract(shortcode_atts(array(
  'f' => '',  
  ), $atts ));

return '<span style="font-family:'.$f.'">'.$content.'</span>';

}
add_shortcode ('f','font_fam');

そしてそれを使うのはこのようになるでしょう:

[f f="Arial"] Text Text [/f]

しかし、それがこのように使われるような方法はあります:

[f Arial] Text Text[/f]
[f Tahoma] Text Text [/f]

( "f ="をスキップ)

ありがとうございます。

2
John

これを試して:

function font_fam($atts, $content = null) {

    extract(shortcode_atts(array(
            'f' => isset($atts[0]) ? $atts[0] : '' ,
            ), $atts));

    return '<span style="font-family:' . $f . '">' . $content . '</span>';
}

add_shortcode ('f','font_fam');
5
Rarst

1つの方法は、f=ビットを追加する 'the_content'フィルタをフックすることによってコンテンツを事前解析することです。

もう1つの方法は、自分のショートコードを[Tahoma]...[/Tahoma]のようなものに変更して全体をスキップすることです。その場合は、多くのショートコードを登録することになります。

1
wyrfel