function number_unit($atts){ $int = $atts['tmp']; $unit = array('万','億','兆','京'); krsort($unit); if(is_numeric($int)){ $tmp = ''; $count = strlen($int); foreach($unit as $k => $v){ if($count > (4 * ($k + 1))){ if($int!==0) $tmp .= number_format(floor( $int /pow(10000,$k+1))).$v; $int = $int % pow(10000,$k+1); } } if($int!==0) $tmp .= number_format($int % pow(10000,$k+1)); return $tmp; }else{ return false; } } add_shortcode('big_number', 'number_unit');
[big_number tmp=1066660]
問題が無いショートコードと見比べてみてください。
取り急ぎショートコードの引数の定義と呼び出し方が一致していないと思います。
以下のようにしてみたらどのようになるでしょうか?
function number_unit($atts){
$int = $atts['tmp'];
...
}
合わせてis_numeric関数が大きい数字(約923京以上)にも対応しているか確認してみてください。
コード変更してみましたが、何も表示されませんでした。
number_unit関数でreturnせずにecho等で出力する必要があるのではないでしょうか。
そのショートコード( [big_number tmp=1066660] )は記事の本文エリアにあって、デフォルトのテンプレートでも表示されませんか?