Explication de la fonction apply_filters et ses variables

15

J'apprends à créer des formulaires HTML à l'aide de PHP en prenant un exemple tiré du plug-in "Enregistrement de formulaire simplr".

Je regarde ce code:

$form .= apply_filters('simplr-reg-instructions', __('Please fill out this form to sign up for this site', 'simplr-reg'));

Pouvez-vous s'il vous plaît expliquer ce qui se passe ici - qu'est-ce que la fonction fait, pourquoi le besoin de 'simplr-reg-instructions' et de 'simplr-reg'?

Pourquoi cette ligne ne peut-elle pas simplement être:

$form .= 'Please fill out this form to sign up for this site' ;

J'ai lu la référence de la fonction mais je n'arrive toujours pas à le comprendre.

    
posée Ash 06.05.2011 - 17:56

2 réponses

21

Cette ligne utilise deux fonctions différentes qui nécessitent deux explications distinctes.

__ ()

Ceci est une fonction de traduction. Si les paramètres sont correctement définis, le premier paramètre sera traduit à partir d'une liste de chaînes pré-traduites. Si une installation a un fichier avec une traduction compilée pour que cette fonction puisse être utilisée, elle l’utilisera. Bien entendu, le plugin doit créer sa propre traduction, d’où le deuxième paramètre. simplr-reg indique à __() que la traduction de la chaîne 'Please fill out this form to sign up for this site' doit se trouver dans le fichier de traduction associé à 'simplr-reg' (cela se fait plus tôt dans le plugin à l’aide de la fonction load_plugin_textdomain() ).

La fonction renvoie alors la traduction. S'il n'y a pas de traduction à renvoyer (par exemple, la langue actuelle n'a pas de traduction compilée, la chaîne n'a pas de traduction compilée pour ce package, etc.), l'entrée d'origine est renvoyée.

Donc, pour un site WordPress en anglais, __( 'This', 'simplr-reg' ) est fonctionnellement identique à 'This' . Pour en savoir plus sur l10n (Localisation), lisez-le dans le codex:

enlace

apply_filters ()

Cette fonction vous permet de filtrer les valeurs utilisées par le plugin selon vos besoins. C'est l'un des principaux concepts à saisir en tant que développeur de plugins. WordPress est étendu par des points d'ancrage, qui sont essentiellement des points d'accès vous permettant de chronométrer l'exécution des actions de votre plugin et / ou de manipuler les informations / données utilisées par WordPress, etc.

Pour manipuler des données telles que l'extrait de code que vous avez demandé, utilisez la fonction add_filter() . Voici un exemple de base de la façon dont cela fonctionne:

add_filter( 'simplr-reg-instructions', 'wpse16573_my_filter' );

Vous reconnaîtrez probablement le premier argument ici. C'est le même que celui utilisé dans add_filter ci-dessus. Ceci est le nom du crochet. Le deuxième argument est le rappel du filtre. Il doit s'agir d'un rappel valide d'une fonction ( en savoir plus sur les rappels ici ). Cette ligne de code indique "Lorsque le crochet 'simplr-reg-instructions' est exécuté, exécutez la fonction avec le rappel que j'ai fourni." apply_filters() exécute le hook trouvé dans son premier argument, ce qui signifie essentiellement "exécuter toutes les fonctions enregistrées pour ce hook." apply_filters passe ensuite tous les autres arguments (dans ce cas, 'Please fill out this form to sign up for this site' ) aux fonctions de ce filtre. Ainsi, le rappel que j'ai utilisé ci-dessus devrait ressembler à ceci:

function wpse16573_my_filter( $text ){
  $text = "<strong>$text</strong>";
  return $text;
}

Il existe deux types de points d'ancrage dans WordPress: les filtres (ceux que nous utilisons ici) et les actions. La principale différence entre les deux est que les filtres s'attendent à ce que vous retourniez quelque chose et que les actions ne le font pas. Ainsi, pour ce filtre, mon exemple ci-dessus ajoute du code HTML autour de 'Please fill out this form to sign up for this site' et le renvoie.

En savoir plus sur les actions et les points d'ancrage ici:

enlace

    
réponse donnée John P Bloch 06.05.2011 - 18:27
5

Vous avez ici deux fonctions différentes: apply_filters et __()

La fonction apply_filters est le moyen utilisé par WordPress pour vous permettre de modifier / éditer la valeur des variables à l’aide de vos propres fonctions de rappel et de la fonction add_filter . il accepte de nombreux arguments, mais les plus importants sont les deux premiers:

$something = apply_filters( $tag, $value, $var ... );

$ tag est le nom du crochet de filtre utilisé dans add_filter , par exemple:

add_filter($tag,callback_function);

$ value est la valeur réelle que vous pourrez modifier ou modifier.

$ var est une variable que votre fonction de rappel peut utiliser, une ou plusieurs.

La fonction __() est utilisée pour les traductions:

__($message,$text_domain);

$ message est le message à traduire.

$ text_domain est la balise de domaine de texte utilisée pour charger la traduction du plugin ou du thème avec load_plugin_textdomain()

que fait-il?

Il recherche dans le module de localisation la traduction de $ message et transmet la traduction à l'instruction return PHP. Si aucune traduction n'est trouvée pour $ message, il ne fait que renvoyer $ message.

Alors maintenant, les deux fonctions de votre cas fonctionnent de la même manière, apply_filters enverra toute fonction de rappel associée à simplr-reg-instructions filter hook la valeur traduite (s'il existe) de 'Veuillez remplir ce formulaire pour vous inscrire à ce site' en utilisant le text-domain de simplr-reg

    
réponse donnée Bainternet 06.05.2011 - 18:23

Lire d'autres questions sur les étiquettes