サポート » 使い方全般 » ショートコードを複数回入れるとパンクズリストが最後のきじの物になる

  • 解決済 ihironaka55

    (@ihironaka55)


    データベース バージョン: MySQL 5.5
    wordpressは最新の3.5.1です。
    オリジナルのテンプレ-トを構築中です。

    困っているのは、ショートコードのソースをネットから取得して、
    改造したものを入れてみたのです。ショートコードの動作は問題ないのですが、
    パンクズリストが、最後に表示される記事のものになってしまうのです。
    これがその固定ページのパンクズになるようにしたいのです。

    コードは下記の通りで、function.phpに書きました。

    function sc_liste($atts, $content = null) {
            extract(shortcode_atts(array(
                    "num" => '5',
                    "cat" => ''
            ), $atts));
            global $post;
            $myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);
    		$retour='';
            foreach($myposts as $post) :
                    setup_postdata($post);
                 $retour.='<dd><a href="'.get_permalink().'">'.the_title("","",false).'</a></dd>';
            endforeach;
    		$retour.='';
            return $retour;
    }
    add_shortcode("list", "sc_liste");

    そして、固定ページの中にショートコードを3個書き込みました。

    <div><dl>
    <dt><a href="#">hogehoge</a></dt>
    [list num="5" cat="61"]
    </dl>
    <a href="##"> 一覧ページへ>></a>
    </div>
    <div><dl>
    <dt><a href="#">hogehoge2</a></dt>
    [list num="5" cat="62"]
    </dl>
    <a href="##"> 一覧ページへ>></a>
    </div>
    <div><dl>
    <dt><a href="#">hogehoge3</a></dt>
    [list num="5" cat="63"]
    </dl>
    <a href="##"> 一覧ページへ>></a>
    </div>

    多分、何かしらデータがどこかに残っていると言うかそういうことなんだろうとは思うのですが、此れを回避する方法が分かりません。

    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター gatespace

    (@gatespace)

    get_posts() して setup_postdata したあとは必ずリセットしましょう。
    http://wpxtreme.jp/understanding-wordpress-loops-and-queries

    ありがとうございます。
    とりあえず、無事に問題をクリアできました。
    下記が修正したデータです。

    function tk_list($atts, $content = null) {
            extract(shortcode_atts(array(
                    "num" => '5',
                    "cat" => ''
            ), $atts));
            global $post;
            $myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);
    		$retour='';
            foreach($myposts as $post) :
                    setup_postdata($post);
                 $retour.='<dd><a href="'.get_permalink().'">'.the_title("","",false).'</a></dd>';
            endforeach;
    		$retour.='';
    		wp_reset_postdata();
            return $retour;
    }
    add_shortcode("list", "tk_list");

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「ショートコードを複数回入れるとパンクズリストが最後のきじの物になる」には新たに返信することはできません。