TimThumb is al jaren een favoriet script voor het wijzigen van de grootte van afbeeldingen voor auteurs van WordPress-thema's. Maar met de nieuwe WordPress Theme Submission Requirements op ThemeForest, moeten we afscheid nemen van TimThumb.
In dit artikel leer je hoe je je thema's kunt overzetten van TimThumb naar een nieuw beeldformaat-script genaamd BFIThumb.
BFIThumb is een open source-project en is beschikbaar op GitHub.
Voordat WordPress de mogelijkheid had om het formaat van afbeeldingen flexibel aan te passen, was de enige optie om bibliotheken van derden te gebruiken, zoals TimThumb. Het leuke van TimThumb was dat het vol zat met functies en dat het heel gemakkelijk te gebruiken was.
Je hoefde er niet veel voor te doen om te werken, je zou gewoon het TimThumb-script moeten gebruiken als jouw src
attribuut in uw img
label en geef het de afbeelding door:
Met slechts die simpele verandering, kunt u:
Met deze functies konden we geweldig ogende afbeeldingen maken die niet beperkt waren tot kleine vierkante miniaturen.
Een goede reden is de grote beveiligingsfout in TimThumb die werd ontdekt en weergegeven in versie 1.10. In een notendop was er een lusgat waardoor schadelijke code kon worden uitgevoerd op de servers die een TimThumb-script hosten.
Veel sites zijn hierdoor gehackt - inclusief sommige van mijn eigen - en ook enkele gebruikers van mijn thema's. Hoewel dit in latere versies van TimThumb werd opgelost, waren veel mensen zich zelfs niet bewust van de beveiligingsfout totdat het te laat was. Het was aan het thema van auteurs en site-eigenaren om hun thema's of TimThumb-scripts bij te werken om de fix op te nemen.
Naar mijn mening was het probleem met dit debacle niet vanwege het beveiligingslek zelf, maar meer vanwege hoe dit type probleem niet eenvoudig op een wereldwijde schaal kon worden opgelost. Omdat TimThumb een script van derden was, was het moeilijk voor mensen om snel de beveiligingsupdate te pakken te krijgen, of zelfs om gewoon op de hoogte te worden gebracht dat er een beveiligingsfout bestond.
Als een beveiligingsfout van dit niveau echter in de WordPress-kern werd gevonden, zou deze waarschijnlijk meteen worden hersteld met een snelle WordPress beveiligingsupdate en zouden de meeste mensen zich niet eens bewust zijn van het probleem.
Dat gezegd hebbende, zou het misschien beter zijn om een WordPress-functie te gebruiken om onze afbeelding te vergroten of verkleinen.
Dus, we moeten TimThumb van onze WordPress-thema's verwijderen. Als thema-auteurs op ThemeForest is misschien de meest voor de hand liggende reden dat TimThumb is niet langer toegestaan met de implementatie van Envato's nieuwe WordPress Theme Submission Requirements.
Gelukkig voor ons, toen WordPress 3.5 werd uitgebracht, introduceerde het de WP Image Editor-klasse. Deze klasse heeft enkele basisfuncties voor het roteren, bijsnijden en vergroten of verkleinen van afbeeldingen. Nu hebben we een ingebouwde aanpassing van het formaat binnen WordPress!
Waarschijnlijk een van de beste kenmerken van de WP Image Editor-klasse is dat het ondersteunt zowel GD- als ImageMagick-bibliotheken (in tegenstelling tot TimThumb dat alleen GD ondersteunde). Dit betekent dat onze thema's meer WordPress-installaties kunnen ondersteunen.
Dit is hoe je de WP_Image_Editor
klasse:
// Een implementatie retourneren die WP_Image_Editor $ image = wp_get_image_editor ('cool_image.jpg') verlengt; if (! is_wp_error ($ afbeelding)) $ image-> formaat wijzigen (400, 300, true); $ image-> save ('new_image.jpg');
De WP Image Editor is eenvoudig, maar een beetje tekortschietend voor onze intenties. U zult duidelijk uw eigen wrapper-functie moeten maken, zodat u niet elke keer een code hoeft te gebruiken als u een afbeelding met een nieuwe grootte wilt weergeven.
Een ander ding om op te merken is dat de wp_get_image_editor
functie accepteert alleen een afbeeldingsbestandspad, u moet ook een methode toevoegen om uw omslagfunctie om te zetten in uw afbeeldings-URL.
Afgezien van de noodzaak om een wrapper-functie te maken, zijn er enkele tekortkomingen om TimThumb eenvoudig te vervangen door de WP_Image_Editor
klasse:
Het zou leuk zijn als we iets hadden dat functies bevat van zowel de WP Image Editor-klasse als TimThumb. Dit is de reden waarom ik het script BFIThumb heb gemaakt.
Ik zou je willen voorstellen aan een nieuwe beeldresolutie genaamd BFIThumb. BFIThumb is gemaakt met deze punten in gedachten:
WP_Image_Editor
om beeldmanipulatie uit te voeren - Het gebruik van deze WordPress-klasse maakt minder fouten mogelijk, omdat het grootste deel van het proces niet door onze eigen code wordt uitgevoerd. Dit betekent dat we ook het formaat kunnen aanpassen voor zowel GD- als ImageMagick-bibliotheken.src
kenmerk van uw img
-tags. Het pad van de gewijzigde afbeelding wordt door de functie geretourneerd. Dit zorgt voor een beter leesbare code en een eenvoudigere overgangstijd.WP_Image_Editor
en voegt meer functionaliteit toe.BFIThumb is vergelijkbaar gemaakt met het gebruik van TimThumb. De belangrijkste functie die u moet bellen, is bfi_thumb
. Net als bij TimThumb, gebruik je deze functie in de src
kenmerk van uw img
-tags. Deze functie neemt een afbeeldings-URL samen met een reeks parameters op en retourneert vervolgens de URL van de verwerkte afbeelding.
Hier is het basisgebruik van de functie, uitgesplitst om uit te leggen wat er gebeurt:
// Neem de library require_once op ('BFI_Thumb.php'); // Onze parameters, wijzig de grootte van $ params = array ('width' => 400, 'height' => 300); // Ontvang de URL van onze verwerkte afbeelding $ image = bfi_thumb ('URL-to-image.jpg', $ params); // Print onze img-tag-echo af "";
Als u het formaat en de afmetingen wilt aanpassen, hoeft u alleen de benodigde parameters in te voeren:
// Formaat wijzigen alleen op breedte, de hoogte past zich aan aan de juiste verhouding $ params = array ('width' => 400); $ image = bfi_thumb ('URL-to-image.jpg', $ params); // Alleen vergroten / verkleinen op hoogte, de breedte past zich aan aan de juiste verhouding $ params = array ('height' => 300); $ image = bfi_thumb ('URL-to-image.jpg', $ params); // Formaat wijzigen op breedte en hoogte en bijsnijden $ params = array ('width' => 400, 'height' => 300, 'crop' => true); $ image = bfi_thumb ('URL-to-image.jpg', $ params);
Afbeeldingsfilters zijn zeer nuttig en kunnen bij correct gebruik coole effecten in uw thema's inschakelen. Bijvoorbeeld de grijstinten afbeeldingsfilter kan worden gebruikt om zwart-witafbeeldingen te maken die worden gekleurd wanneer erop wordt geplaatst.
Ik had ook een gebruik voor de ondoorzichtigheid
filter wanneer ik de achtergrondafbeelding ondoorzichtig moest maken om een beetje van de achtergrondkleur te tonen.
// Grayscale $ params = array ('grijsschaal' => waar); $ image = bfi_thumb ('URL-to-image.jpg', $ params); // Colorize $ params = array ('color' => '# ff0000'); $ image = bfi_thumb ('URL-to-image.jpg', $ params); // Negeer $ params = array ('negeren' => waar); $ image = bfi_thumb ('URL-to-image.jpg', $ params); // Verander de dekking (maakt van je afbeelding een PNG) $ params = array ('opacity' => 80); // 80% ondoorzichtig $ image = bfi_thumb ('URL-to-image.jpg', $ params); // Meerdere parameters $ params = array ('width' => 400, 'height' => 300, 'greyscale' => true, 'colorize' => '# ff0000'); $ image = bfi_thumb ('URL-to-image.jpg', $ params);
In dit artikel hebben we geleerd om onze afhankelijkheid van TimThumb te verwijderen en verder te gaan naar een meer op WordPress georiënteerde benadering om beeldgrootte te wijzigen met behulp van BFIThumb. Met deze benadering kunnen we een aantal flexibele afbeeldingsaanpassingen uitvoeren en ook enkele van de afbeeldingsfilters gebruiken die we leuk vonden in TimThumb.
Hopelijk kan dit kleine script je helpen met je overgang van TimThumb. Als je suggesties hebt voor nieuwe functies om deze afbeelding beter te maken met het wijzigen van het script, laat dan een reactie hieronder achter.
Ik stel elke feedback, opmerkingen en suggesties zeer op prijs.
Waarmee vervang je TimThumb? Zou u BFIThumb gebruiken in uw volgende WordPress-thema? Laat me weten wat je denkt!