web-dev-qa-db-ja.com

これが投稿内の特定のショートコードのn番目のインスタンスであるかどうかを確認する方法

特定の投稿で20回使用した[item]というショートコードがあるとします。

ショートコードハンドラ関数内から、与えられた[item]の数値インデックスが何であるかを知ることは可能ですか?これが記事の最初の[item]なのか、それとも16日なのか。

[item order="1"][item order="16"]のように手動で属性を追加しても同じ結果が得られることはわかっていますが、コンテンツを追加したり並べ替えたりするときはできるだけ簡単にしたいと思います。項目は編集プロセスで追加、削除、再配置されることが多く、作成者や編集者が変更を加えるたびに番号を付け替えるのは面倒で、間違いを犯しがちです。

これを行うための良い方法はありますか?

グローバル変数が必要ですか?それは悪いですか?

1
supertrue

あなたがクラスを使っているなら、それは

class MyShortcode {

static $instance = 0;

    function __construct($args = array()) {
      add_action( 'init', array(&$this, 'init') );
    }

    function init() {
      add_shortcode('myshortcode', array(&$this, 'shortcode'));
    }

    static function shortcode($atts) {
      //this is the code of your shortcode

      // you can increment your counter
      self::$instance++;

    }

}
2
Elliot