私はWordpressでこの問題と戦ってきました。特に、ネストされたショートコードを持つ1つのショートコードを使用することで、魅力的に機能しますが、単純なショートコードにしたかったので、誰かが使いやすくなりました.
ここでコードを見ることができます
function pb_timeline($attr,$content){
$content = wpautop(trim($content));
return '<ul class="timeline">'.do_shortcode($content).'</ul>';
}
add_shortcode("timeline","pb_timeline");
function pb_tlsection($attr,$content=null){
return '<li><div class="year">YYYY</div><div class="dot"></div><div class="box"><p>Description To Go Here.</p></div></li>';
}
add_shortcode("timeline_section","pb_tlsection");
?>
ショートコードのHTML出力は基本的にこれです
<ul class="timeline">
<li>
<div class="year">YYYY</div>
<div class="dot"></div>
<div class="box">Description</div>
</li>
</ul>
私がやりたいのは、次のようなWordpressショートコードを使用することです
[timeline_section year="2013" description="Hello"]
年と説明は、たとえばコンテンツ エディターによって入力できます。これにはショートコードが機能していますが、ショートコードタグからデータを入力して正確に表示する方法については、まったくわかりません。
編集:同じ問題に遭遇した人を参照するために、これに解決策を追加します。私を正しい道に導いてくれたCyrilleの答えを改善します。そのままだと以下の方が効果的であることが分かりました...
function pb_tlsection($atts){
extract( shortcode_atts( array(
'year' => 'YYYY',
'desc' => 'Description',
), $atts, 'timeline_section' ) );
return '<li><div class="year">' . $year . '</div><div class="dot"></div><div class="box"><p>' . $desc . '</p></div></li>';
}
add_shortcode("timeline_section","pb_tlsection");