21554


下記、score.phpの内容をWordPressのショートコード化して固定ページで出力したいと考えております。score.phpは一例ですが、実際のデータは膨大な量の記述があるためにfunctions.phpとは別ファイルとして用意したいと考えております。

**score.php**

[code]

    <?php
      $data = array(
        array(
          'name' => 'player1',
          'time'  => "1分64秒" ),
    
        array(
          'name' => 'player2',
          'time'  => "1分59秒" )
      );
    ?>
    
[/code]

wordpress環境外で検証した結果、下記のソースで出力することはできました。  
下記のソースをショートコード化できればと考えています。

[code]

    <?php
      require('score.php');
      foreach($data as $val) { ?>
        <p><?php echo $val['name']; ?></p>
        <p><?php echo $val['time']; ?></p>
    <?php } ?>
    
[/code]

拙い説明で申し訳ありませんが、ご教授よろしくお願い致します。


CC BY-SA 3.0
2016-01-21T18:23:58.080
21157
2016-02-01T02:14:07.757
9330
question
php wordpress
WPショートコード内からデータ構造を出力する方法


以下のようなコードでよろしいかと思います。

[code]

    <?php
    if(!function_exists('score_shortcode')) {
      function score_shortcode($atts, $content) {
        include('score.php');
        $ret = '';
        foreach($data as $val) {
          $ret .= '<p>' . $val['name'] . '</p>' . "\n" . '<p>' .
            $val['time'] . '</p>' . "\n";
        }
        return $ret;
      }
    }
    add_shortcode('score', 'score_shortcode');
    
[/code]

これで`[score]`と記述することでショートコードを記述できると思いますがいかがでしょうか？


CC BY-SA 3.0
2016-02-01T02:14:07.757
21554
2016-02-01T02:14:07.757
14208
21157
answer