Als webdesigners druist het in tegen onze aard om de toegang tot onze code te beperken. We leren de compatibiliteit van onze websites te maximaliseren en streven waar mogelijk naar achterwaartse compatibiliteit; om geleidelijk verbeterde en sierlijk vernederende sites te creëren. Als we het op IE1 kunnen laten werken, is dat geen slechte zaak ...

Het probleem, althans voor WordPress-ontwikkelaars, is dat WordPress een monster is; het zal je en je mooie kleine project heel doorslikken als je het toelaat.

Wanneer u een WordPress-thema maakt, hetzij als een maatwerkopdracht voor een specifieke klant, hetzij om door te verkopen op een van de vele WordPress-marktplaatsen, kan uw doel nooit bestaan ​​uit alles wat ooit deel uitmaakte van WordPress. In plaats daarvan zou het uw doel moeten zijn om de belangrijkste functies, functies en filters op de best mogelijke manier te gebruiken om de huidige codebase te maximaliseren.

Als professional is uw tijd geld, hoe langer u aan uw ontwikkeling besteedt, hoe minder winst u maakt; het is een simpele vergelijking. De grootte van WordPress betekent dat u 80% van uw tijd gemakkelijk kunt besteden aan 20% van de markt. Het is veel beter om 80% van de tijd aan 80% van de markt te besteden. In termen van kwaliteitsproducten en uw eigen banksaldo is dit de zekerste aanpak.

In 14 belangrijke WordPress-functies om thema-ontwikkeling te starten we hebben enkele functies doorlopen die ik, zonder falen, opneem in de functies van mijn startthema.php. In dit artikel behandelen we een andere cruciale functie die op je lijst met belangrijke WordPress-functies moet staan. Het zal je hoofd en hart redden, pijn op de weg.

WordPress beperkt de compatibiliteit met eerdere versies

Wanneer een vermijdbare exploit de site van uw klant (die op uw thema draait) tot op de knieën brengt, wie denk u dat ze zullen bellen? Laat me je het giswerk besparen: ben jij het, m'kay? Het maakt niet uit dat wat het probleem ook veroorzaakt helemaal niet jouw fout is, voor de klant, het maakt alleen uit dat je de meest linkse link hebt naar het mogelijke probleem. Het laatste dat ze onthouden, is je inhuren om een ​​nieuw thema voor hen te bouwen.

Als na inspectie blijkt dat de site van de klant nog steeds op WordPress ouder is dan de huidige stabiele versie, neem dan een paar seconden en sla jezelf over het gezicht: eerst linkerwang, dan rechterwang. Uw thema zou hen niet moeten toestaan ​​om dat te doen!

Als je aandacht hebt geschonken, vanaf versie 3.6 van WordPress, zul je een functie behoorlijk hoog in de functies van het standaardthema opmerken. Php die het gebruik van het standaardthema beperkt tot versies van WP die nieuwer zijn dan 3.6. In feite is het de tweede functie die wordt gedefinieerd in de functies van Twenty Fourteen.php!

Die functie ziet er ongeveer zo uit:

/*** 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';}

We zijn geïnteresseerd in de inhoud van dat back-compat.php- bestand. De functies die daar gedefinieerd zijn, zijn wat we zoeken om te gebruiken met onze eigen thema's.

Geen land voor oude WordPress

Het maakt bijna niet uit welke functies u implementeert, maar als het mogelijk is, beperkt u het gebruik van uw thema's tot redelijk nieuwe versies van WordPress. Dat zorgt ervoor dat de eindgebruiker hun installatie bijwerkt (des te beter voor hen in termen van beveiliging) en zorgt ervoor dat u het grootste deel van uw ontwikkelingstijd aan de meerderheid van de gebruikers besteedt.

De functie definiëren

Om dit te bereiken, gebruiken we de functie PHP version_compare () om de momenteel geïnstalleerde versie van WordPress te controleren aan de hand van de nieuwste beschikbare versie en ervoor te zorgen dat de laatste geïnstalleerde versie niet lager is dan 3.6 - maak je eigen selectie voor welke versie je wilt testen, 3.6 is geen aanbeveling, slechts een voorbeeld. Die functie ziet er ongeveer zo uit:

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' );}

Wat deze functie doet, is een actiefunctie butter_never_get_old () definiëren die alleen zal worden uitgevoerd als de kernfunctie after_switch_theme () wordt aangeroepen. Tot nu toe doet de functie butter_never_get_old () , die zich in onze versiecontrole bevindt, het volgende:

  1. Controleert welke versie van WordPress momenteel is geïnstalleerd
  2. Zorgt ervoor dat de versie nieuwer is dan versie 3.6
  3. Voert de kosmisch relevante if / else uit:
  4. Als dit het geval is: activeer het thema.
  5. Als dit niet het geval is: activeer het thema niet. In plaats daarvan re / activeer / activeer het standaardthema en, om aardig te zijn, output een aardig klein bericht dat de gebruiker opdraagt ​​om hun belachelijk oude installatie op te waarderen. Kom op, opa!

Nudge, duw op! Upgrade dat s #% *

Vervolgens moeten we de functie butter_step_your_game_up () definiëren die onze beheerdersmeldingen afdrukt als iets niet klopt, wat ogenschijnlijk zou betekenen dat de WP-versie ouder is dan we zouden willen.

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 );}

De functie butter_step_your_game_up () stelt onze vertaalbare foutmeldingstring in de variabele $ update_message in zoals gedefinieerd (dit thema vereist ... enz.) Dat vervolgens wordt afgedrukt en weergegeven aan de gebruiker (vanuit de eerder gedefinieerde butter_never_get_old () -functie) en visueel, binnen een div met klasse van 'fout'. Met dit bericht kunt u naar wens stylen.

Alles bij elkaar zou onze functie er dus als volgt uit moeten zien:

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 );} }

Met dat op zijn plaats zorgt u ervoor dat uw thema niet kan worden geactiveerd op WordPress-installaties die ouder zijn dan versie 3.6.

Hou het schoon

Voor zover mogelijk moet u uw functions.php schoon houden. Het moet schoon zijn in die zin dat je snel kunt scannen en meteen kunt zien wat elke functie aan het doen is. Daarom willen we misschien onze functie verplaatsen naar een map inclusief.

Maak, als je dat nog niet hebt gedaan, een map aan en noem die 'inc' in de directory van je thema. Maak daarbinnen een php-bestand en noem die back-compat.php . Kopieer en plak de inhoud van de functie die we zojuist hebben gemaakt en laat alleen de version_compare () in functions.php achter:

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

In het bestand /inc/back-compat.php plakt u de functies die we eerder hebben gedefinieerd:

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 );}

Conclusie

Het is altijd een moeilijke verkoop om een ​​goede ontwikkelaar te vertellen dat ze de compatibiliteit van hun code moeten beperken. Maar de enorme omvang van de WordPress-codebase, vooral als u zich richt op achterwaartse compatibiliteit, maakt het beperken van de reikwijdte van uw thema een praktische noodzaak. WordPress zelf doet dit moet de geldigheid ervan benadrukken.

En nu, bevrijd van de constante obstakels van de verouderde code, kun je je energieën concentreren waar ze horen: op het benutten van de ontzagwekkende kracht van WordPress.

Uitgelichte afbeelding / miniatuur, gebruik compatibiliteit afbeelding via Shutterstock.