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
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?