2010-07-07 2 views
3

Dans WP, vous pouvez filtrer les shortcodes d'une chaîne et exécuter leurs fonctions avec do_shortcode($string).Wordpress/PHP - Faire un seul shortcode

Est-il possible de filtrer un seul shortcode, au lieu de tous les shortcodes enregistrés?

par exemple, je besoin de quelques shortcodes être disponible pour les affiches de commentaires aussi bien, mais pas tous pour des raisons évidentes :)

Répondre

2
function do_shortcode_by_tags($content, $tags) 
{ 
    global $shortcode_tags; 
    $_tags = $shortcode_tags; // store temp copy 
    foreach ($_tags as $tag => $callback) { 
     if (!in_array($tag, $tags)) // filter unwanted shortcode 
      unset($shortcode_tags[$tag]); 
    } 

    $shortcoded = do_shortcode($content); 
    $shortcode_tags = $_tags; // put all shortcode back 
    return $shortcoded; 
} 

Cela fonctionne en filtrant le $shortcode_tags global, en cours d'exécution do_shortcode(), puis tout remettre comme avant.

Exemple d'utilisation;

$comment = do_shortcode_by_tags($comment, array('tag_1', 'tag_2')); 

Cela appliquera la shortcode tag_1 et tag_2 au commentaire.

Questions connexes