我想知道是否有更有效的方法来编写它,使用while循环或其他东西。基本上,我想动态生成许多WordPress短代码。
# Span 1
add_shortcode('span-1', 'span1');
function span1($atts, $content = null) {
return generateSpan(1, $content);
}
# Span 2
add_shortcode('span-2', 'span2');
function span2($atts, $content = null) {
return generateSpan(2, $content);
}
// ... repeating as many times as necessary
我试过这个,但似乎没有用:
$i = 1;
while ($i < 12) {
$functionName = 'span' . $i;
$shortcodeName = 'span-' . $i;
add_shortcode($shortcodeName, $functionName);
$$functionName = function($atts, $content = null) {
return generateSpan($i, $content);
};
$i++;
}
答案 0 :(得分:2)
我知道它不会回答“动态生成”问题,但是,您也可以使用以下属性:[span cols="1"]
- &gt; [span cols="12"]
。
add_shortcode('span', 'span_shortcode');
function span_shortcode( $atts, $content = null )
{
if( isset( $atts['cols'] ) )
{
return generateSpan( $atts['cols'], $content );
}
}
回调的第三个参数可用于检测当前的短代码:
for( $i=1; $i<13; $i++ )
add_shortcode( "span-$i", 'span_so_17473011' );
function span_so_17473011( $atts, $content = null, $shortcode )
{
$current = str_replace( 'span-', '', $shortcode ); // Will get $i value
return generateSpan( $current, $content );
}
答案 1 :(得分:0)
你应该可以这样做:
<?php
$scName = 'span-';
for($i = 0; $i < 12; $i++)
{
add_shortcode($scName . $i, function($atts, $content = null){
return generateSpan($i, $content);
});
}
?>