Listing des fonctions PHP très utiles à WordPress

Voici quelques morceaux de code, chinés à droite à gauche sur le web, à rajouter dans le fichier fonction.php de votre thème ou votre child thème Wordpress. Un florilège de fonction très utiles que j'utilise dans la plupart de mes projets, ce qui permet d'alléger son site en plugin et extensions.

Publié le 21/05/2024

Suppression des feed WP et des URL de feed

Ce code désactive les flux RSS sur un site WordPress, améliorant ainsi la sécurité et la confidentialité en limitant l’exposition du contenu. Il peut également booster les performances en réduisant les requêtes inutiles et encourage les visiteurs à accéder directement au site pour obtenir les informations, offrant un contrôle plus strict sur la diffusion du contenu.

function itsme_disable_feed() {
 wp_die( __( 'No feed available, please visit the <a href="'. esc_url( home_url( '/' ) ) .'">homepage</a>!' ) );
}
add_action('do_feed', 'itsme_disable_feed', 1);
add_action('do_feed_rdf', 'itsme_disable_feed', 1);
add_action('do_feed_rss', 'itsme_disable_feed', 1);
add_action('do_feed_rss2', 'itsme_disable_feed', 1);
add_action('do_feed_atom', 'itsme_disable_feed', 1);
add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1);
add_action('do_feed_atom_comments', 'itsme_disable_feed', 1);

Suppression du stockage de l’adresse IP lors de la saisie des commentaires

Ce code dans WordPress empêche le stockage des adresses IP des utilisateurs lorsqu’ils laissent des commentaires, en conformité avec les exigences du RGPD sur la protection des données personnelles. En retournant une chaîne vide pour l’adresse IP de l’utilisateur, il assure que cette information sensible n’est pas enregistrée dans la base de données du site, augmentant ainsi la confidentialité des visiteurs et réduisant les risques liés à la gestion des données personnelles.

function pavenum_comment_user_ip() {
  return '';
}
add_filter( 'pre_comment_user_ip', 'pavenum_comment_user_ip' );

Suppression du champs site web des commentaires

Ce code supprime certains champs du formulaire de commentaire sur WordPress, notamment le champ du site web, de l’email et le dépôt des cookies. En éliminant ces champs, il réduit la collecte de données personnelles des utilisateurs, contribuant ainsi à une meilleure conformité avec les réglementations telles que le RGPD. Cette modification simplifie également le formulaire de commentaire, rendant le processus de soumission plus rapide et moins invasif pour les utilisateurs.

function pavenum_disable_comment_infos( $fields ) { 
  unset( $fields['email'] );
  unset( $fields['url'] );
  unset( $fields['cookies'] );
  return $fields;
}
add_filter('comment_form_default_fields','pavenum_disable_comment_infos');

Désactiver l’accès à l’API REST de WordPress pour les utilisateurs non loggés

Ce code configure WordPress pour restreindre l’accès à l’API REST uniquement aux utilisateurs connectés ayant des droits d’administrateur. En faisant cela, il renforce la sécurité du site en limitant les interactions avec l’API aux utilisateurs qui ont les autorisations nécessaires, prévenant ainsi les accès non autorisés et les éventuelles exploitations de l’API. Cette mesure est particulièrement utile pour protéger les données sensibles et les fonctionnalités clés du site contre les utilisations abusives.

add_filter( 'rest_authentication_errors', function( $result ) {
  if ( ! empty( $result ) ) {
    return $result;
  }
  if ( ! is_user_logged_in() ) {
    return new WP_Error( 'rest_not_logged_in', 'Vous devez être connecté pour accéder à cette ressource.', array( 'status' => 401 ) );
  }
  if ( ! current_user_can( 'administrator' ) ) {
    return new WP_Error( 'rest_not_admin', 'Vous n\'avez pas les droits suffisants pour accéder à cette ressource.', array( 'status' => 401 ) );
  }
  return $result;
});

Désactiver les emojis (Permet d’éviter au moins 2 requêtes HTTP)

Ce code désactive la fonctionnalité d’emojis dans WordPress, ce qui permet d’éliminer des requêtes HTTP inutiles lors du chargement des pages. En retirant les scripts et styles liés aux emojis, non seulement cela améliore les performances en réduisant le temps de chargement des pages, mais cela contribue aussi à optimiser l’expérience utilisateur sur des connexions internet plus lentes. De plus, en simplifiant le code généré par WordPress, cela peut également aider à maintenir un code plus propre et plus facile à gérer.

function disable_emojis() {
 remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
 remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
 remove_action( 'wp_print_styles', 'print_emoji_styles' );
 remove_action( 'admin_print_styles', 'print_emoji_styles' );
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
 add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
}
add_action( 'init', 'disable_emojis' );

function disable_emojis_tinymce( $plugins ) {
 if ( is_array( $plugins ) ) {
 return array_diff( $plugins, array( 'wpemoji' ) );
 } else {
 return array();
 }
}

Différer le chargement des commentaires

Ce code utilise le hook wp_enqueue_scripts pour dé-enregistrer le script comment-reply et le ré-enregistrer avec l’option true pour la valeur $in_footer, ce qui signifie qu’il sera chargé à la fin de la page au lieu de l’être immédiatement au début.

function defer_comments_js() {
  if (!is_admin()) {
    wp_deregister_script('comment-reply');
    wp_register_script('comment-reply', false, array('jquery'), null, true);
  }
}
add_action('wp_enqueue_scripts', 'defer_comments_js');

Désactiver la fonction d’intégration (embed) dans WordPress

Ce code utilise les hooks rest_api_init, embed_oembed_discover, oembed_dataparse, wp_head pour supprimer les actions associées à la fonction d’intégration. Il utilise également un filtre embed_oembed_discover pour désactiver la découverte automatique d’intégration.

function disable_embeds_code_init() {
  // Remove the REST API endpoint.
  remove_action('rest_api_init', 'wp_oembed_register_route');
  
  // Turn off oEmbed auto discovery.
  add_filter('embed_oembed_discover', '__return_false');
  
  // Don't filter oEmbed results.
  remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
  
  // Remove oEmbed discovery links.
  remove_action('wp_head', 'wp_oembed_add_discovery_links');
  
  // Remove oEmbed-specific JavaScript from the front-end and back-end.
  remove_action('wp_head', 'wp_oembed_add_host_js');
}

add_action('init', 'disable_embeds_code_init', 9999);

Désactiver Gravatar dans WordPress en utilisant un filtre de commentaire


Ce code dans WordPress désactive l’utilisation de Gravatar pour les avatars des commentaires. En interceptant le filtre get_avatar, il retourne false pour toute demande d’avatar, ce qui empêche WordPress de charger les images de profil Gravatar. Cette approche réduit les requêtes externes et améliore la confidentialité des utilisateurs en évitant de partager leur adresse email avec le service Gravatar. Cela peut également contribuer à accélérer le chargement des pages en éliminant les requêtes vers des serveurs externes.

function disable_gravatar($default, $email, $rating, $default_image) {
  return false;
}
add_filter('get_avatar', 'disable_gravatar', 10, 4);