Développement WordPress

Quelques fonctions utiles pour vos projets WordPress

Après plusieurs années à développer sous WordPress, j’ai amassé / écrit quelques fonctions / bouts de code sympas qui pourront certainement vous être utiles dans vos projets. En voici donc un premier jet, si vous avez des demandes spécifiques n’hésitez pas à demander via les commentaires ou à me mailer directement via le formulaire de contact. J’essayerai de vous faire ce genre d’articles assez souvent avec des trucs et astuces WordPress. Le prochain article sur ce thème traitera de l’intégration WooCommerce.

L’ensemble de ces bouts de code / fonctions sont à coller dans le fichier functions.php de votre thème actuel.

Modifier la qualité de compression des images envoyés sur WordPress

WordPress compresse par défaut les images à 90% de leur taille originale ce qui peut parfois poser des soucis de pixellisation ou au contraire, la compression peut vous paraître trop légère. Voici donc un « filter » qui vous permet d’agir directement sur ce taux de compression:

add_filter('jpeg_quality', function($arg){ return 100; });

Intervenez directement sur le return 100; pour changer le taux de compression, par exemple:

add_filter('jpeg_quality', function($arg){ return 80; });

Compressera les images à 80% de leur taille originale. Personnellement je le règle généralement à cette valeur, c’est un bon compromis qualité / poids.

Supprimer la version des fichiers CSS et JS dans le code source de votre site

Par défaut les fonctions qui servent à appeler vos feuilles de styles CSS et vos fichier JS retournent la version de ces fichiers. C’est pas le seul endroit ou on peut récupérer la version de ces fichiers cependant c’est toujours sympa et ça mange pas trop de temps de planquer un peu tout ça. Voici donc la fonction en question:

function remove_cssjs_ver( $src ) {
if( strpos( $src, '?ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

Les versions de vos fichiers CSS et JS ne devraient plus être affichés.

Supprimer la version de WordPress utilisée

Afficher la version de WordPress utilisée n’est pas vraiment utile (en tout cas j’en ai jamais trouvé l’utilité). Vous pouvez supprimer cette information (présente dans le header, dans vos flux RSS et à d’autres endroits) avec la fonction suivante:

function wopr_remove_version() {
return '';
}
add_filter('the_generator', 'wopr_remove_version');

La version actuelle de votre WordPress ne devrait plus apparaître.

Supprimer certains menus de l’administration

Si vous souhaitez rendre inaccessible certains menus de l’administration de votre site WordPress, il existe une fonction simple prévue à cet effet:

function remove_menus(){
	remove_menu_page( 'edit.php' );                   //Posts
	remove_menu_page( 'upload.php' );                 //Media
	remove_menu_page( 'edit.php?post_type=page' );    //Pages
	remove_menu_page( 'edit-comments.php' );          //Comments
	remove_menu_page( 'themes.php' );                 //Appearance
	remove_menu_page( 'plugins.php' );                //Plugins
	remove_menu_page( 'users.php' );                  //Users
	remove_menu_page( 'tools.php' );                  //Tools
	remove_menu_page( 'options-general.php' );        //Settings
}
add_action('admin_menu', 'remove_menus');

Attention, cette fonction supprime les éléments indiqués en commentaire. Si vous souhaitez que la partie Posts et Pages soit visible, supprimez simplement les lignes de cette fonction.

Vous pouvez également supprimer d’autres éléments du menu, pour cela passez simplement la souris sur l’élément du menu et récupérez la partie de l’url juste après « /wp-admin/ » et ajoutez une fonction:

remove_menu_page('url_de_votre_menu');

à la fonction ci-dessus.

Supprimer la barre d’administration WordPress

La barre d’administration WordPress s’avère être un outil bien pratique cependant il se peut dans certains cas que son affichage ne vous soit pas utile. Voici donc une fonction pour cacher cette dernière:

function remove_admin_bar() {
  if (!is_admin()) {
    show_admin_bar(false);
  }
}
add_action('after_setup_theme', 'remove_admin_bar');

Vous pouvez également la rendre invisible pour tous les utilisateurs connectés sauf les administrateurs (ou autres, il vous suffit de changer la condition dans la boucle if):

function remove_admin_bar() {
  if (!current_user_can('administrator') && !is_admin()) {
    show_admin_bar(false);
  }
}
add_action('after_setup_theme', 'remove_admin_bar');

La barre ne devrait plus être visible sur votre front-end à part pour les utilisateurs au rang d’administrateur.

Cacher les erreurs de login

Cacher les erreurs de login vous permet d’éviter de donner trop facilement certaines informations à un utilisateur malintentionné. Si par exemple vous entrez un login qui n’existe pas avec un mot de passe bidon, WordPress vous indiquera que ce dernier n’existe pas. Si vous entrez un login qui existe, il vous indiquera au contraire que le mot de passe renseigné n’est pas correct pour le login renseigné. Il ne restera plus qu’au vilain pirate à trouver le mot de passe.

La fonction suivante affiche un message d’erreur générique pour toutes les erreurs de login (login incorrect / mot de passe incorrect):

add_filter('login_errors',create_function('$a', "return 'Erreur lors de la connexion. Identifiant et/ou mot de passe incorrects';"));

Bien entendu vous pouvez personnaliser votre message d’erreur ;).

Désactiver la fonctionnalité de recherche WordPress

Certains de vos projets ne nécessitent pas de fonctionnalités de recherche. Généralement on n’affiche simplement pas de formulaire de recherche cependant si un petit malin bidouille l’URL il peut facilement appeler cette fonctionnalité et afficher des résultats. La fonction suivante désactive complètement la recherche:

function wopr_filter_query( $query, $error = true ) {

if ( is_search() && !is_admin() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;

if ( $error == true )
$query->is_404 = true;
}
}

add_action( 'parse_query', 'wopr_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

La recherche ne devrait plus être active sur votre site.

C’est tout pour le moment pour ce qui est WordPress en général, le prochain article sera comme écrit plus haut sur l’intégration WooCommerce.

A propos de l'auteur

Jordan

Développeur javascript spécialisé dans le déploiement de solutions crossplatform, je suis CTO et associé chez Owlie, une petite startup Messine / Parisienne qui facilite l’innovation et le développement agile de solutions web & mobile créatives, robustes et performantes.

Laissez un commentaire