Hoe Website Screenshots voor uw WordPress-site te genereren

In deze tutorial leer je een open geheim: hoe je screenshots van websites genereert om te gebruiken in je WordPress-berichten met behulp van een service van WordPress.com. We zullen dit zelfs veranderen in een eenvoudig te gebruiken shortcode om de schermafbeeldingen weer te geven ... Laten we aan de slag gaan!


Achtergrond

Het is een open geheim en het is al een paar jaar geleden dat WordPress een screenshotgenerator op zijn subdomein s.wordpress.com openbaarde. En de scuttlebutt is dat zolang je het niet misbruikt, het dan gratis te gebruiken is. WordPress.com gebruikt het voor het genereren van screenshots voor zijn verschillende activiteiten.

Hier is bijvoorbeeld de url om een ​​screenshot van wp.tutsplus te tonen met een breedte van 400 pixels:

http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwp.tutsplus.com?w=400

Mogelijk moet u op de koppeling klikken omdat de generator enige tijd nodig heeft om de afbeelding in de cache op te slaan.

Wat we gaan doen:

  • schrijf een shortcode-functie om een ​​screenshot weer te geven
  • gebruik de shortcode om een ​​screenshot weer te geven als onderdeel van de post-lus met een aangepast veld voor de URL

Stap 1 De shortcode-functie

Onze shortcode zal worden gebruikt zoals:

 [ss_screenshot site = "http://wp.tutsplus.com"]

U kunt de code toevoegen aan het functions.php-bestand in uw themamap. De volledige code is beschikbaar in de bronlink hierboven.

 add_shortcode ('ss_screenshot', 'ss_screenshot_shortcode'); functie ss_screenshot_shortcode ($ atts) $ width = intval ($ atts ['width']); $ width = (100 <= $width && $width <= 300) ? $width : 200; $site = trim($atts['site']); if ($site !=") $query_url = 'http://s.wordpress.com/mshots/v1/' . urlencode($site) . '?w=' . $width; $image_tag = ''. $ site. ''; echo ''. $ image_tag. '';  else echo 'Bad screenshot url!'; 

Wat deze code doet:

  • declareer een shortcode genaamd ss_screenshot met de functie add_shortcode
  • de shortcode-functie accepteert de array $ atts die de twee shortcode-kenmerken bevat: width en site
  • het kenmerk width wordt geconverteerd naar een geheel getal en gecontroleerd om er zeker van te zijn dat het binnen een geschikt bereik ligt, in dit geval tussen 100 en 300 pixels. Opmerking: we gebruiken de PHP ternaire operator om een ​​standaardbreedte van 200 toe te wijzen als de geleverde breedte buiten ons bereik valt. Dit houdt ook rekening met een ontbrekend width-attribuut.
  • het sitekenmerk wordt bijgesneden om onbedoelde linker en rechter spaties te verwijderen
  • we maken een query-url door een urlengecodeerd sitekenmerk en het kenmerk width toe te voegen
  • uiteindelijk verpakken we de query_url in een afbeeldingstag en een koppelingstag, zodat gebruikers op de schermafbeelding kunnen klikken en naar de site kunnen worden geleid

Stap 2 Test de shortcode

Voeg in een post of pagina deze shortcode toe:

 [ss_screenshot site = "http://amazon.com"]

Wanneer u de post of pagina bekijkt, ziet u een 300 pixel breed screenshot van Amazon. Houd er rekening mee dat u de pagina na enkele seconden mogelijk moet vernieuwen om het screenshot in de cache te bekijken. Speel rond met de breedte en kijk wat er gebeurt als je buiten bereik komt. Overigens kunt u elk gewenst breedtebereik instellen. Test ook een slechte URL: u zou het waarschuwingsbericht moeten zien in plaats van een screenshot.

Nu we een werkende shortcode hebben, laten we zien hoe we dat in onze WordPress-lus kunnen opnemen.


Stap 3 Aangepaste veldinstellingen

Laten we ons een scenario voorstellen waarin we een schermafbeelding van een site naast elk van onze berichten willen weergeven. Om redenen van opmaak en bruikbaarheid is het het beste om dit proces te automatiseren door een aangepast veld toe te voegen aan ons berichtbewerkingsscherm. In dat veld kunnen we een site-url invoeren die vervolgens in de post-loop kan worden gebruikt om een ​​screenshot weer te geven met onze nieuwe shortcode.

Als het aangepaste veldvak niet wordt weergegeven op je bewerkingsscherm, kijk dan rechtsboven naar het scherm en je zou het scherm Schermopties moeten zien. Klik daarop en vink het vakje Aangepaste velden aan. Nu zou je zoiets als onderaan scherm moeten zien:

Klik op de koppeling Nieuwe invoeren en maak een nieuw aangepast veld met de naam screenshot_url. Dit is wat u zou moeten zien:

Wanneer u nu een bericht maakt / bewerkt (het aangepaste veld verschijnt voor alle berichten), kunt u een URL invoeren om een ​​screenshot te genereren met betrekking tot het bericht.


Stap 4 Voeg Screenshot Display To The Loop toe

Hier is een serieus versimpelde versie van de standaard WordPress post loop (zoals te vinden in een themasjabloonbestand) inclusief onze schermcode voor het screenshot:

 if (have_posts ()) while (have_posts ()): the_post (); de titel(); $ url = get_post_meta ($ post-> ID, 'screenshot_url', true); do_shortcode ('[ss_screenshot site = "'. $ url. '"]'); de inhoud(); stop als; endwhile;

Wat deze code doet:

  • controleer of we berichten hebben, start met lussen en toon de titel van het bericht
  • haal de inhoud van het screenshot-url-aangepastveld op door de huidige bericht-ID en de naam van het aangepaste veld door te geven aan de functie get_post_meta
  • omdat we ons in een sjabloonbestand bevinden, gebruiken we de functie do_shortcode om onze shortcode te ontleden, inclusief de screenshot-URL voor dit bericht
  • dan tonen we de berichtinhoud en beëindigen we de lus

Stap 5 Test de lus

Als je een bericht met de titel Honda Accord hebt gemaakt en deze een schermafbeelding url van http://www.honda.com hebt gegeven, met behulp van je nieuwe loop-setup, zou je zoiets als dit moeten zien:


Conclusie

In plaats van een ruw waarschuwingsbericht weer te geven als een bericht geen screenshot-URL heeft, kunt u een standaardafbeelding weergeven.

Als u de screenshotgenerator van WordPress niet wilt gebruiken of als u grotere behoeften hebt, kunt u de gratis optie gebruiken op een screenshotdienst zoals http://www.shrinktheweb.com. U kunt de technieken die in deze zelfstudie worden gebruikt toepassen op elke screenshotdienst.

Dingen om te onthouden:

  • de schermafbeeldingen nemen (meestal) enkele seconden om te genereren, dus vernieuw de pagina
  • urlencode de url verzonden naar de screenshot-service
  • begin met urls met http: //
  • als u meer veeleisende behoeften hebt aan schermafbeeldingen, gebruikt u een commerciële service