Organisation des codes courts. Comment les afficher tous et leurs attributs?

4

1. Mes codes courts

J'ai développé plusieurs shortcodes pour mon propre thème, je les charge dans functions.php comme ceci: require_once (MY_URL . '/bartag_shortcode.php') .

Voici un shortcode bartag exemplaire de WordPress Codex:

function bartag_func( $atts ) {
    extract( shortcode_atts( array(
        'foo' => 'something',
        'bar' => 'something else',
    ), $atts ) );

    return "foo = {$foo}";
}
add_shortcode( 'bartag', 'bartag_func' )

2. Comment les lister tous?

  • Je ne suis même pas sûr de pouvoir le faire, car add_shortcode () ne permet pas de grouper shortcodes, donc je suppose qu’il sera assez difficile de distinguer mes shortcodes des autres (des plugins ou d’autres sources). Des idées? Je pouvais parcourir tous les codes courts contenant des fichiers utilisant foreach(glob('*.php') as $shortcode) et file_get_contents avec des expressions rationnelles, mais en ce qui concerne les performances, c’est l’une des idées les plus stupides que j’ai jamais proposée.
  • Si ce n'est pas possible, comment afficher la liste de tous les codes courts actifs afin de pouvoir les filtrer (je peux ajouter un préfixe à ceux que j'ai créés puis répertorier tous les codes courts commençant par ce préfixe).

Merci!

    
posée Wordpressor 16.03.2012 - 03:14

2 réponses

6

Inspectez la variable globale $shortcode_tags :

print '<pre>' . htmlspecialchars( print_r( $GLOBALS['shortcode_tags'], TRUE ) ) . '</pre>';

Sortie:

Array
(
    [wp_caption] => img_caption_shortcode
    [caption] => img_caption_shortcode
    [gallery] => gallery_shortcode
    [embed] => __return_false
    [contactform] => Array
        (
            [0] => T5_Contact_Form Object
                (
                    [debug:protected] => 
                    [base_name:protected] => t5-contact-form/t5-contact-form.php
                    [prefix:protected] => t5c
                    [address:protected] => 
                    [nonce_name:protected] => t5_contact_form_nonce
                    [hidden_field:protected] => t5_no_fill
                    [option_name:protected] => t5c_default_address
                )

            [1] => shortcode
        )

)

Comme vous pouvez le voir, vous obtenez le nom du shortcode en tant que clé et la fonction associée en tant que valeur. Si la fonction est un objet, vous obtenez l'objet avec ses propriétés et la fonction associée sous forme de tableau.

Je ne vois pas comment obtenir les attributs par défaut. Peut-être que per API Reflection .

Les attributs sont définis à l'intérieur des fonctions. Le shortcode enregistré ne sait rien du fonctionnement interne de la fonction associée. Et les attributs par défaut peuvent être ambigus: ils pourraient être le résultat d'un autre appel de fonction à l'intérieur du gestionnaire de rappel.

    
réponse donnée fuxia 16.03.2012 - 05:40
3

Jetez un coup d’œil à Référence de code court , qui est une extension fournissant une liste de tous les codes courts disponibles à l'aide du L ' API de Reflection de PHP devrait vous donner une idée.

Sinon, vous pouvez fournir une interface utilisateur pour utiliser vos codes abrégés, par exemple, prendre un butin sur mon plugin Interface utilisateur ShortCodes Qui crée un dialogue pour chaque shortcode dynamiquement avec les attributs nécessaires.

    
réponse donnée Bainternet 16.03.2012 - 08:31

Lire d'autres questions sur les étiquettes