快捷码内的快捷码以求和值

时间:2013-02-20 作者:rpz

我有返回值的统计短代码

[stat1 val=“美国”][stat2 val=“欧洲”][stat3 val=“中国”][stat4 val=“非洲”]

我很难创建可以对短代码值求和的短代码,因此如果

stat1=1 stat2=2 stat2=3 stat2=4[sumsc][stat1][stat2][stat3][stat4][sumsc]它将返回值10

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您可以尝试以下操作:

add_shortcode(\'sumsc\',\'sumsc_func\');
function sumsc_func( $atts, $content = null ) {
    $sum=0;
    preg_match_all(\'/stat([0-9]+)/i\', $content, $matches);
    if(isset($matches[1])){
        $sum = array_sum($matches[1]);
    }
    return do_shortcode($content)." <div>The sum is <strong>".$sum."</strong></div>";     
}
这将在短代码内容的末尾添加总和。

Usage example:

您可以在编辑器中尝试以下操作:

[sumsc][stat1 val="usa"] [stat2 val="europe"] [stat3 val="china"] [stat4 val="africa"][/sumsc]
Edit: 上面的函数对短代码名称中的索引求和,而不是对短代码值求和-我想我误解了这个问题;-)

Here is an updated version that sums the shortcode values:

add_shortcode(\'sumsc\',\'sumsc_func\');
function sumsc_func( $atts, $content = null ) {
    $sum=0;
    $content=str_replace(array("  ","] [","]["),array(" ","][","]|["),$content);
    $codes=explode("|",$content);
    foreach($codes as $code){
        $sum+=do_shortcode($code);
    }
    return " <div>The sum is <strong>".$sum."</strong></div>";    
}

结束

相关推荐

Why posts array is empty?

我尝试获取没有自定义字段集的帖子,或者if set的值与给定的参数不同。这是我的代码: $args_included = array( \'numberposts\' => 1, \'post_type\' => \'post\', \'post_status\' => \'published\', \'meta_query\' => array(&#x