web-dev-qa-db-fra.com

Explication de la fonction apply_filters et ses variables

J'apprends à construire des formulaires HTML à l'aide de PHP en prenant un exemple tiré du plug-in "simplr form registration registration".

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 - 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 à comprendre.

15
Ash

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 cette fonction, elle l'utilisera. Bien sûr, 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 figurer dans le fichier de traduction associé à 'simplr-reg' (cette opération est effectuée auparavant dans le plug-in à l'aide de la fonction load_plugin_textdomain()).

La fonction retourne ensuite la traduction. S'il n'y a pas de traduction à renvoyer (par exemple, la langue en cours 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:

http://codex.wordpress.org/I18n_for_WordPress_Developers

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 sur lequel vous avez posé une question, 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. C'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 ( pour en savoir plus sur les rappels ici ). Cette ligne de code indique "Lorsque le hook '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 crochets ici:

http://codex.wordpress.org/Plugin_API

21
John P Bloch

Vous avez deux fonctions différentes ici 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);

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

$ 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()

ce qu'il fait?

Il recherche dans le module de localisation la traduction de $ message et la transmet à l'instruction PHP return. Si aucune traduction n'est trouvée pour le message $, elle renvoie simplement le message $.

Alors maintenant, les deux fonctions dans votre cas fonctionnent de la même manière, apply_filters enverra toute fonction de rappel associée à simplr-reg-instructions filtre accrocher la valeur traduite (le cas échéant) de 'Veuillez remplir ce formulaire pour vous inscrire à ce site' en utilisant le texte -domaine de simplr-reg

5
Bainternet