Magazine High tech

Les fonctions WordPress PHP utiles pour développeurs

Publié le 19 mars 2020 par Seomix @rochdaniel

Le cœur du CMS permet de faire pas mal d'actions lors de nos créations et refontes de site. Malheureusement on passe souvent à côté de fonctions très utiles pour les développeurs WordPress.

Chez SeoMix, on a donc décidé de créer cette page de ressources pour retrouver toutes les fonctions WordPress méconnues ou peu utilisées, ainsi que quelques fonctions PHP réellement utiles :

Thèmes et rendu HTML

wp_unique_id()

Fonction très utile, elle vous permet de générer un ID unique à chaque fois que vous l'appelez. Imaginons que vous insérez un même bloc Gutenberg dans une page mais que vous voudriez un ID HTML unique pour chaque bloc : cette fonction est faites pour vous !

La page officielle : wp_unique_id()

make_clickable()

Comme son nom l'indique, la fonction rend " cliquable " tout ce qui est censé l'être : les liens et les emails. Par défaut, cela ajoute l'attribut nofollow aux liens (pour le supprimer, vous devrez agir sur le hook " make_clickable_rel " ).

La page officielle : make_clickable()

get_theme_file_uri()

La fonction renvoie l'URL du thème actuellement actif. On peut ainsi récupérer l' URL complète du thème enfant si vous avez un thème enfant, sinon celui du thème WordPress parent. La fonction sera utile pour appeler dans une fonction un fichier précis. Par exemple, cela pourrait renvoyer : https://www.seomix.fr/wp-content/themes/nom-du-super-theme/

La page officielle : get_theme_file_uri()

Sécurité & spam

antispambot()

Transforme le code HTML de vos adresses email pour réduire le spam, mais en gardant le côté pratique et visuel classique d'une adresse email. En résumé, cela encode certains caractères sans pour autant enlever la possibilité pour l'utilisateur de copier/coller ou de cliquer sur ces emails.

La page officielle : antispambot()

wp_safe_redirect()

Un équivalent plus sécurisé de wp_redirect(), dans le sens où le nom d'hôte de destination peut être filtré. Par défaut, seul le nom de domaine d'origine est autorisé. Vous ne pouvez donc faire que des redirections internes par défaut avec cette fonction WordPress. D'autres noms de domaines peuvent être ajoutés via le hook allowed_redirect_hosts.

La page officielle : wp_safe_redirect()

fIchiers

wp_ext2type()

Une petite fonction utile pour connaître le type de fichier. Par exemple, la fonction renvoie " audio " pour mp3 ou " image " pour jpeg.

Dans mon exemple, j'utilise la fonction PHP Pathinfo pour extraire l'extension du fichier et/ou de l'URL.

Sachez également que cette fonction ne reconnaît pas certains types de fichiers, comme la police d'écriture .woff2. C'est parce que WordPress utilise dans cette fonction une autre appelée wp_get_ext_types(), et cette dernière liste les formats reconnus par défaut. Vous pourrez les filtrer via le hook " ext2type ".

Les pages officielles :

size_format()

Convertit un chiffre en bytes pour le rendre plus lisible pour l'humain. Par exemple, la fonction transformera " 1048576 bytes " en " 1 Mo ". Pratique, et efficace comme fonction WordPress :

La page officielle : size_format()

get_dirsize()

Son nom est relativement explicite : cette fonction WordPress vous retourne le poids d'un dossier complet. C'est utile par exemple pour connaître le poids des fichiers présents dans un dossier précis.

Attention, la fonction a une mise en cache native d'une heure. Il faut supprimer le transient " dirsize_cache " pour avoir la donnée en temps réel (mais attention dans ce cas, la fonction peut être gourmande en ressources).

La page officielle : get_dirsize()

Entêtes HTTP

wp_remote_retrieve_response_code()

La fonction wp_remote_get() permet de récupérer tout le contenu et les entêtes d'une URL (une sorte de file_get_content() amélioré). Mais si l'on souhaite extraire uniquement le code de réponse d'une adresse web, wp_remote_retrieve_response_code() est fait pour vous.

La page officielle : wp_remote_retrieve_response_code()

La fonction vous renvoie une description textuelle d'un entête HTTP. Elle va par exemple renvoyer " Page non trouvée " pour l'entête 404. Donc en prenant l'exemple donné juste avant, voici ce que cela donne :

La page officielle : get_status_header_desc()

URL et liens

url_shorten()

Une fonction WordPress simple permettant de raccourcir à 35 caractères maximum une URL, en enlevant au passage le protocole HTTP/HTTPS et le sous-domaine " www " :

La page officielle : url_shorten()

Cette petite fonction WordPress permet de transformer des liens relatifs en liens absolus en rajoutant les éléments manquants (le nom de domaine et le protocole). C'est très pratique quand on copie ou que l'on importe des contenus ayant des URL relatives (donc celles sans le nom de domaine)

La page officielle : links_add_base_url()

user_trailingslashit()

Fonction méconnue, elle permet de modifier si besoin est une URL pour qu'elle corresponde au paramétrage utilisé par son WordPress. Si dans " Réglages > Permaliens " , vous avez un slash à la fin, alors la fonction le rajoute s'il est manquant. Si à l'inverse il n'y a pas de slash de fin dans votre paramétrage, la fonction le retire s'il est présent.

Cette fonction WordPress est souvent indispensable quand vous avez besoin de récupérer ou générer une URL interne pour l'utilisateur.

La page officielle : user_trailingslashit()

Ajoute l'attribut " target " aux liens. S'ils en possèdent déjà un, il sera remplacé. Avec le troisième paramètre, on peut d'ailleurs appliquer cette fonction à d'autres éléments HTML que les liens <a href>.

La page officielle : links_add_target()

Les fonctions pour développeurs

Mise en cache

WordPress dispose d'une série de fonctions pour avoir un cache non persistant, c'est à dire un cache temporaire. L'objectif de ces fonctions est de conserver proprement des données pour les réutiliser dans d'autres fonctions et fichiers lors du chargement de la page :

A chaque changement de page, le cache créé par ses fonctions est réinitialisée (les données sont stockées dans un simple tableau). Cela ne remplace donc pas les transients de WordPress ou une vraie mise en cache comme le ferait WP Rocket. Ces fonctions sont utiles dans plusieurs cas, notamment :

  • Ne pas recalculer une donnée pour une URL donnée, le tout sans avoir à écrire cette donnée en base (comme le ferait un transient qui déclenchera des requêtes SQL) ;
  • Partager facilement les données mise en cache entre différents fichiers, là encore sans appel en base de donnée. On pourrait imaginer le scénario suivant : le fichier A de mon extension fait un cache_add et le fichier B de mon thème WordPress fait un cache_get juste après.

wp_list_sort()

Comme le nom l'indique, cette fonction de WordPress permet de trier une liste d'objets selon une clé ou un paramètre précis.

Si vous avez votre propre liste d'objets, voici ce que l'on peut faire en utilisant un paramètre commun à notre liste d'objets :

La page officielle : wp_list_sort()

wp_list_pluck()

Cette fonction permet de " nettoyer " un tableau pour ne conserver qu'une clé précise de chaque élément :

La page officielle : wp_list_pluck()

wp_array_slice_assoc()

Permet d'extraire des données d'un tableau, en l'occurrence des clés précises. C'est très utile quand votre tableau contient un grand nombre de données et que vous ne voulez en conserver que certaines bien précises connues à l'avance (par exemple, je récupère une option qui contient un tableau de valeurs et seules certaines me seront utiles).

La page officielle : wp_array_slice_assoc()

Les fonctions des Extensions

acf_maybe_get()

Cette fonction de l'extension Advanced Custom Field permet d'extraire si elle existe une clé d'un tableau, et de renvoyer le cas contraire " null " (ou une valeur de son choix utilisée en 3ème paramètre).

Sachez qu'on peut facilement reproduire cette fonction en dehors d'ACF tellement cette dernière est simple :

D'autres fonctions PHP ?

Si vous en connaissez d'autres, faites-le savoir en commentaire et nous viendrons étoffer ce guide.

Merci au passage à la communauté WordPress, notamment Pierre Saïkili et Julio Potier pour certaines trouvailles qu'ils sont déjà pu partager dans le passé.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Seomix 5102 partages Voir son profil
Voir son blog