web-dev-qa-db-fra.com

Brancher. Code HTML dans le modèle

peut-être que je suis aveugle ou quelque chose mais j'ai cherché beaucoup, ici et aussi wordpress codex et similaire. Par exemple, j'ai écrit un plugin qui lit quelque chose à partir d'une base de données et en imprime. Mais comment puis-je archiver que je ne produise pas dans le plugin lui-même? L'idée a été de mettre les variables au thème et faire le reste dans le thème. Est-ce seulement possible avec do_shortcode quand vous ne voulez pas utiliser de variables globales? Quand j'ai 8 variables dans l'exemple, comment puis-je le faire avec un seul shortcode? Comme je l'ai dit, je suis peut-être aveugle et n'ai pas trouvé la bonne solution. Ou quelle est la meilleure pratique pour faire cette chose simple? Peut-être que quelqu'un a un petit exemple de code?

Cordialement et merci

1
Burnhardo

Une façon de le faire est de définir une fonction, qui renvoie ou répète des éléments dans votre fichier de plug-in, puis d’utiliser cette fonction dans vos fichiers de thème en cas de besoin.

Par exemple dans votre my-awesome-plugin.php

function hello_world() {
    echo 'Hello world!';
}

Et puis dans votre fichier de thème, disons single.php

// safety check if your plugin ever gets disabled
if ( function_exists( 'hello_world' ) ) {
    hello_world();
}

Cela se traduirait par Bonjour tout le monde! sur votre message individuel.

Ensuite, c’est à vous de choisir le type de contenu que vous souhaitez renvoyer ou renvoyer à la fonction que vous avez définie dans le fichier plugin. Il pourrait s'agir d'une chaîne de caractères HTML, entier, tableau, objet, etc.

Ces exemples vous aident-ils dans votre situation?

EDIT Maintenant que je lisais votre question juste après la publication, je me suis rendu compte que je l'avais peut-être mal comprise et j'y ai mal répondu.

Vous pouvez peut-être définir une classe dans votre fichier de plug-in et y stocker des données. Puis avoir une fonction qui retourne une instance unique de celle-ci. Même façon que WooCommerce le fait.

De https://github.com/woocommerce/woocommerce/blob/master/woocommerce.php

function wc() {
    return WooCommerce::instance();
}

En ce qui concerne l'initialisation de classe, il existe de bonnes réponses, . Le meilleur moyen de lancer une classe dans un plugin WP?

1
Antti Koskinen