サポート » テーマ » ショートコードでインクルードしつつ引数を使う

  • robocon150

    (@robocon150)


    実現したいことは下記になります。
    ・ショートコードを使って、任意の場所でPHPファイルをインクルードさせる
    ・ショートコード内に、引数を入れて上記のファイル内で使う

    ページIDを指定する引数をつけて、そのページIDに該当するものだけを表示させたいです。
    現状下記のようにしていますが、うまく動きません。
    functions.phpの書き方がおかしいのかなと思うのですが、教えていただけますと助かります。

    ▼ショートコード
    [myphp file='post_list' postid=1,3]

    ▼functions.php

    function Include_my_php($params = array()) {
      extract(shortcode_atts(array(
      'file' => 'default',
      'postid' => '',
      ), $params));
      ob_start();
      get_template_part('include/'. $file);
      return ob_get_clean();
    } 
    add_shortcode('myphp', 'Include_my_php');

    ▼post_list.php

    <ul>
     <?php
    $args = array(
    	'posts_per_page' => -1 ,
    	'post_type' => 'faq',
    	'include' => $postids,
    );
    $posts = get_posts( $args );
    foreach($posts as $post):
    setup_postdata($post);
    ?>
    <li><?php the_title(); ?></li>
    <?php endforeach; wp_reset_postdata(); ?>
    </ul>
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • ishitaka

    (@ishitaka)

    $postid (post_list.php では $postids と名前が違いますが) の値は、テンプレートファイルには渡されないからではないでしょうか?
    参考サイト: https://www-creators.com/archives/465

    スレッド開始 robocon150

    (@robocon150)

    ishitaka様

    すみません、これ書き間違いです。’include’ => $postid, としてもダメでした。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。