J'ai un tas de plugins. De toute évidence, ils ont tous leur propre domaine de texte pour l'internationalisation (i18n).
J'ai aussi un tas de fichiers que j'inclus dans tous mes plugins - je les jette tous dans un répertoire appelé common. Cela ajoute un widget de tableau de bord que je souhaite doter de tous mes plugins, ainsi qu'un script de mise à jour (car ils ne résident pas dans le dépôt de plugins wordpress.org).
Je veux être capable de simplement déposer mon dossier commun dans chacun de mes plugins sans avoir à éditer les fichiers. Mais je suis préoccupé par les chaînes de texte contenues à l'intérieur.
Puis-je appeler load_plugin_textdomain deux fois, pour deux domaines différents, dans le même plugin? Quelle est la meilleure façon de gérer cette situation en pensant à i18n?
Ou devrais-je parcourir chaque instance de mes fichiers communs et modifier manuellement le domaine de texte pour qu'il corresponde au plugin?
Vous pouvez appeler load_plugin_textdomain()
plusieurs fois dans chaque plugin, mais je ne le ferais pas.
Placez les fichiers communs dans un plug-in séparé, par exemple luke-carbis-library
. Dans ce plugin, créez deux fonctions simples pour la configuration et le chargement de fichiers supplémentaires:
add_action( 'plugins_loaded', 'lcl_init' );
function lcl_init()
{
$dir = plugin_dir_path( __FILE__ );
$url = plugins_url( __FILE__ );
// maybe load necessary files and translation
do_action( 'lcl_init', $dir, $url );
}
function lcl_load( $file )
{
require_once plugin_dir_path( __FILE__ ) . $file;
}
Dans vos plugins dépendants accrochent dans votre action personnalisée:
add_action( 'lcl_init', 'depending_plugin_init', 10, 2 );
Vous pouvez maintenant changer la structure interne du plugin de base à tout moment. les autres plugins utilisent simplement $dir
et $url
depuis votre hook.