En tant que concepteurs de sites Web, il est contraire à notre nature de restreindre l’accès à notre code. Nous avons appris à optimiser la compatibilité de nos sites Web et à viser la rétrocompatibilité dans la mesure du possible. créer des sites progressivement améliorés et dégradants. Si nous pouvons le faire fonctionner sur IE1, ce n'est pas une mauvaise chose ...

Le problème, au moins pour les développeurs WordPress, est que WordPress est un monstre; ça vous engloutira et votre joli petit projet entier si vous le laissez faire.

Lorsque vous produisez un thème WordPress, que ce soit comme travail sur mesure pour un client spécifique, ou pour revendre sur l'un des nombreux marchés WordPress, votre objectif ne peut jamais être de couvrir tout ce qui a déjà fait partie de WordPress. Au lieu de cela, votre objectif devrait être d'utiliser les fonctions clés, les fonctionnalités et les filtres de la meilleure façon possible pour maximiser la base de code actuelle.

En tant que professionnel, votre temps est d’argent, plus vous consacrez de temps à votre développement, moins vous faites de profits; c'est une équation simple. La taille de WordPress signifie que vous pouvez facilement consacrer 80% de votre temps à 20% du marché. Mieux vaut consacrer 80% du temps à 80% du marché. En termes de qualité des produits et de votre propre solde bancaire, c'est l'approche la plus sûre.

Dans 14 fonctions WordPress clés pour démarrer le développement du thème Nous avons passé en revue certaines des fonctions que, sans faute, j'inclus dans les fonctions.php de mon thème de démarrage. Dans cet article, nous couvrons une autre fonction cruciale qui devrait figurer sur votre liste de fonctions WordPress clés. Cela vous sauvera à la fois la tête et le cœur.

WordPress limite déjà la compatibilité en amont

Lorsqu'un exploit évitable amène le site de votre client (qui tourne sur votre thème) à genoux, à votre avis, qui appellera-t-il? Permettez-moi de vous sauver les devinettes: c'est vous, mec? Peu importe que le problème ne soit pas du tout votre faute, pour le client, il est seulement important que vous soyez le lien le plus proche du problème possible. La dernière chose dont ils se souviennent est de vous embaucher pour leur créer un nouveau thème.

Si, après inspection, vous constatez que le site du client fonctionne toujours sur WordPress plus ancien que la version stable actuelle, prenez quelques secondes et passez à travers le visage: la joue gauche en premier, puis la joue droite. Votre thème ne devrait pas leur permettre de le faire!

Si vous aviez fait attention, à partir de la version 3.6 de WordPress, vous aurez remarqué une fonction assez élevée dans le thème par défaut, functions.php, qui restreignait l'utilisation du thème par défaut aux versions de WP plus récentes que 3.6. En fait, c'est la seconde fonction définie dans fonctions.php de Twenty Fourteen!

Cette fonction ressemble à ceci:

/*** Twenty Fourteen only works in WordPress 3.6 or later.*/if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Nous nous intéressons au contenu de ce fichier back-compat.php . Les fonctions définies sont ce que nous recherchons pour nos propres thèmes.

Aucun pays pour l'ancien WordPress

Peu importe les fonctionnalités que vous implémentez, mais si possible, limitez l'utilisation de vos thèmes à des versions raisonnablement nouvelles de WordPress. Cela garantira que l’utilisateur final mette à jour son installation (ce qui est encore mieux en termes de sécurité) et s’assure que vous consacrez la majorité de votre temps de développement à la majorité des utilisateurs.

Définir la fonction

Pour ce faire, nous utilisons la fonction PHP version_compare () pour vérifier la version actuellement installée de WordPress par rapport à la dernière version disponible, en nous assurant que la dernière version installée n'est pas inférieure à 3.6. Effectuez votre propre sélection sur la version à tester, 3.6 n'est pas une recommandation, juste un exemple. Cette fonction ressemble à ceci:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// do (or do not) somethingfunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' ); // we add some admin notices here (we haven't defined this function yet)}add_action( 'after_switch_theme', 'butter_never_get_old' );}

Cette fonction définit une fonction d'action butter_never_get_old () qui ne s'exécutera que lorsque la fonction principale after_switch_theme () sera appelée. Jusqu'à présent, la fonction butter_never_get_old () , qui se trouve dans notre contrôle de version, effectue les opérations suivantes:

  1. Vérifie quelle version de WordPress est actuellement installée
  2. S'assure que la version est plus récente que la version 3.6
  3. Exécute l'If / Else cosmiquement pertinent:
  4. Si c'est le cas: Activez le thème.
  5. Si ce n'est pas le cas: n'activez pas le thème. Au lieu de cela, activez / désactivez le thème par défaut et, pour être agréable, affichez un joli petit message demandant à l'utilisateur de mettre à niveau son installation ridiculement ancienne. Allez, grand-père!

Coup de coude, coup de coude! Mettre à niveau ce s #% *

Ensuite, nous devons définir la fonction butter_step_your_game_up () qui affiche nos notifications si quelque chose tourne mal, ce qui signifierait que la version de WP est plus ancienne que nous le souhaiterions.

function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You're currently using version %s. Please upgrade.', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

La fonction butter_step_your_game_up ci-dessus définit notre chaîne de message d'erreur traduisible dans la variable $ update_message telle que définie (ce thème nécessite ... etc) qui est ensuite imprimé et affiché pour l'utilisateur (depuis la fonction butter_never_get_old () définie précédemment ) et visuellement, à l'intérieur un div avec classe de "erreur". Ce message, vous pouvez alors style comme vous le souhaitez.

Donc, tout compte fait, notre fonction devrait ressembler à ceci:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// This function deactivates our newly activated theme if WP isn't newer than 3.6// It then re/activates the default themefunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );// This function, called from within the above function// outputs the relevant message that nudges the theme's user// to upgradefunction butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );} }

Avec cela en place, vous vous assurez que votre thème ne peut pas être activé sur les installations WordPress antérieures à la version 3.6.

Garde le propre

Dans la mesure du possible, vous devriez garder vos fonctions.php propres. Il devrait être propre dans le sens où vous devriez pouvoir scanner rapidement et discerner immédiatement ce que fait chaque fonction. À cette fin, nous pourrions vouloir déplacer notre fonction dans un dossier include.

Si vous ne l'avez pas déjà fait, créez un dossier et nommez-le 'inc' dans le répertoire de votre thème. A l'intérieur, créez un fichier php et nommez-le back-compat.php . Copiez et collez le contenu de la fonction que nous venons de créer en ne laissant que la version_compare () dans functions.php:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Dans le fichier /inc/back-compat.php , collez les fonctions définies précédemment:

function butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

Conclusion

Il est toujours difficile de dire à un bon développeur qu’il doit limiter la compatibilité de son code. Mais la taille même de la base de code WordPress, en particulier lorsque vous vous concentrez sur la rétrocompatibilité, limite la portée de votre thème. WordPress lui-même faisant cela devrait en souligner la validité.

Et maintenant, libéré des obstacles constants présentés par le code obsolète, vous pouvez concentrer vos énergies là où elles appartiennent: exploiter la puissance impressionnante de WordPress.

Image / vignette en vedette, utilisations image de compatibilité via Shutterstock.