web-dev-qa-db-fra.com

do_shortcode () dans la page d'administration

J'utilise quelques plugins qui ont des codes courts ... Cependant, au lieu de créer une page publique pour le contenu, j'ai créé de nouvelles pages dans l'administrateur en utilisant add_menu_page et j'ai besoin de savoir comment utiliser do_shortcode() dans ce contexte.

En l'état actuel, toute la fonction crache la chaîne. Je suppose que c'est parce que l'API shortcode n'est pas disponible dans une page d'administration.

Comment puis-je contourner cela? Je ne trouve aucune documentation expliquant comment utiliser les codes abrégés dans WP Admin ... ou même si c'est possible.


Plus précisément, j'essaie d'utiliser des codes abrégés WooCommerce dans WP Admin. Je déteste le fait que les plugins n'utilisent pas le WP Backend pour la gestion des comptes/utilisateurs.

11
dcolumbus

Au lieu d'appeler do_shortcode(), appelez simplement la fonction associée au shortcode.

Exemple

Il existe un shortcode nommé [example] et une fonction enregistrée en tant que gestionnaire de shortcode:

function example_shortcode( $atts = array(), $content = '' )
{
    extract( 
            shortcode_atts( 
            array (
            'before' => '',
            'after' => '',
            ), 
            $atts 
       )
   );

    return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );

Dans votre page d'administration, vous appelez simplement la fonction:

echo example_shortcode( 
    array ( 'before' => 'This ', 'after' => '!' ), 
    'works' 
);

Sortie: This works!.

Plus rapide et plus fiable que do_shortcode().

9
fuxia

Il semble que l’API shortcode soit disponible dans l’administrateur, mais sa sortie dépendra de la balise shortcode en question.

Le [caption] intégré fonctionne comme prévu, alors que [embed] ne fonctionne pas (cela est dû au fait que l'API incorporée "lazy-charge" son shortcode et dépend du filtre the_content à exécuter, donc techniquement, ce n'est pas la faute de l'API shortcode).

Conclusion: Cela dépend entièrement de comment et quand la balise est enregistrée, et de ce qu'elle fait/suppose lorsqu'elle est exécutée.

@dcolumbus De quelle étiquette parle-t-on dans votre cas?

2
TheDeadMedic