Avez-vous déjà entendu parler de WordPress Fonctions enfichables? Si ce n’est pas le cas, cet article devrait attirer votre attention. En deux mots, les fonctions enfichables sont WordPress fonctions de base que vous pouvez remplacer. Toutes ces fonctions sont regroupées dans un seul fichier : «wp-includes/pluggable.php« . Les fonctions enfichables ont été introduites dans WordPress 1.5.1, mais dans les versions les plus récentes de WordPress, cette méthode n’est plus utilisée. Les fonctions récentes utilisent désormais des filtres sur leur sortie. Mais vous pouvez toujours remplacer les fonctions enfichables, et c’est ce que je voudrais couvrir dans cet article.
Quelles fonctions ?
Les fonctions enfichables sont :
- auth_redirect
- check_admin_referer
- check_ajax_referer
- obtenir_avatar
- get_currentuserinfo
- get_user_by_email
- get_user_by
- get_userdatabylogin
- get_userdata
- is_user_connected_in
- wp_authentifier
- wp_check_password
- wp_clear_auth_cookie
- wp_create_nonce
- wp_generate_auth_cookie
- wp_generate_password
- wp_get_current_user
- wp_hash_password
- wp_hash
- wp_logout
- wp_mail
- wp_new_user_notification
- wp_nonce_tick
- wp_notify_moderator
- wp_notify_postauthor
- wp_parse_auth_cookie
- wp_password_change_notification
- wp_rand
- wp_redirect
- wp_safe_redirect
- wp_sel
- wp_sanitize_redirect
- wp_set_auth_cookie
- wp_set_current_user
- wp_set_password
- wp_text_diff
- wp_validate_auth_cookie
- wp_validate_redirect
- wp_verify_nonce
Vous pouvez cliquer sur le nom de chaque fonction pour accéder à sa page de codex.
Comment remplacer les fonctions enfichables
Eh bien, c’est assez simple, tout ce que vous avez à faire est de créer un fichier dans vos plugins contenant une instruction « if ( !function_exists() )… », puis de redéfinir la fonction. Je vous recommande fortement de copier et coller la fonction d’origine lorsque vous démarrez. C’est ainsi que vous êtes sûr que la fonction fonctionnera. Voici un exemple vide :
if ( ! function_exists('wp_notify_postauthor') ) :
/**
* Notify an author of a comment/trackback/pingback to one of their posts.
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
* @return bool False if user email does not exist. True on completion.
*/
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
/* This is where you redefine the function */
}
endif;
J’aimerais parler de la fonction « wp_notify_postauthor() ». C’est lui qui est chargé d’envoyer un email aux auteurs de l’article lorsqu’un nouveau commentaire est ajouté. Dans l’un de mes plugins, le gestionnaire de problèmes WordPress, je devais désactiver cette notification, mais uniquement un type de publication personnalisé spécifique. J’ai donc copié toute la fonction et j’ai simplement ajouté ceci :
if ( ! function_exists('wp_notify_postauthor') ) :
/**
* Notify an author of a comment/trackback/pingback to one of their posts.
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
* @return bool False if user email does not exist. True on completion.
*/
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
if( $post->post_type != 'issue'):
/* content of the original function */
endif;
}
endif;
C’est simple, mais cela fonctionne très bien sans avoir à faire d’énormes changements ou à créer une fonction personnalisée complète liée à une action personnalisée.
wp_mail()
Comme vous l’avez vu dans la liste des fonctions enfichables, wp_mail() est une fonction enfichable. Cette fonction est celle utilisée pour l’envoi d’emails. Partout dans WordPress, lorsqu’un e-mail est envoyé, il utilise cette fonction. C’est pourquoi le personnaliser peut être très intéressant. Par exemple, vous pouvez utiliser un modèle html par défaut pour tous les e-mails envoyés depuis votre installation WordPress.
Vous pouvez également envoyer une copie cachée de chaque message à un e-mail spécifique pour avoir une sorte de sauvegarde (croyez-moi, cela peut être utile lorsque quelqu’un vous dit qu’il n’a pas reçu le message !).
wp_authenticate()
Vous pouvez également modifier wp_authenticate() et ajouter des paramètres supplémentaires pour renforcer la sécurité de votre site (attaques par force brute par exemple).
auth_redirect()
Cette fonction est celle qui vérifie si un utilisateur est connecté, et sinon elle le redirige vers la page de connexion. Ce serait assez facile de remplacer la fonction et de rediriger l’utilisateur vers une page personnalisée, au lieu de la page de connexion par défaut (par exemple si vous souhaitez masquer le dossier wp-admin).
wp_generate_password()
Cette fonction est celle qui génère automatiquement les mots de passe. Honnêtement, vous n’avez pas vraiment besoin de le modifier, mais maintenant que vous savez ce que sont les attaques par force brute, vous pourriez être intéressé par la création de mots de passe plus forts. Eh bien, c’est la fonction à améliorer.
Conclusion
Pour conclure ce court article sur les fonctions enfichables de WordPress, je voudrais souligner le fait que les nouvelles fonctions ne fonctionnent plus comme ça. Comme je l’ai écrit ci-dessus, ils utilisent maintenant des filtres. Mais les fonctions enfichables sont des fonctions importantes en particulier lors de la création de plugins vraiment spécifiques. Mais soyez prudent lorsque vous utilisez des fonctions enfichables. Si la fonction nouvellement créée ne fonctionne pas parfaitement, elle peut casser une partie de votre site Web (en termes de fonctionnalité), alors veuillez les tester dans toutes les conditions.