web-dev-qa-db-fra.com

Comment vérifier s'il s'agit de la nième instance d'un shortcode donné dans un message

Supposons que j'ai un shortcode appelé [item], que j'ai utilisé 20 fois dans un message particulier.

Est-il possible, à partir de la fonction de gestionnaire de shortcode, de savoir quel est l'indice numérique du [item] donné? Comme, que ce soit le 1er [item] dans le post, ou le 16ème?

Je sais que je pourrais obtenir le même résultat en ajoutant manuellement un attribut, tel que [item order="1"] et [item order="16"], mais je souhaite rendre les choses aussi simples que possible lors de l'ajout et de la réorganisation du contenu. Les éléments sont souvent ajoutés, supprimés et réorganisés dans le processus d'édition, et il serait fastidieux et sujet aux erreurs de la part de l'auteur et de l'éditeur de les renuméroter à chaque modification.

Y at-il un bon moyen de le faire?

Cela nécessiterait-il des variables globales? Est-ce mauvais?

1
supertrue

Si vous utilisez une classe, ce serait

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