Maak je eigen aangepaste Twitter-plug-in voor WordPress

Je hebt net een geweldige post op je WordPress-blog gepubliceerd en zou iedereen daarover willen vertellen. Heb je een Twitter-account? Laten we dan een plug-in ontwikkelen die, wanneer u een nieuw bericht op WordPress opslaat, automatisch tweets, zodat al uw volgers weten dat ze iets nieuws op uw blog kunnen vinden. Laten we beginnen!


Waarom een ​​Twitter-plug-in maken van Scratch?

Hoewel er veel geweldige gratis Twitter-plug-ins zijn, is het de mening van deze auteurs dat er eigenlijk geen vervanging is om te weten hoe je dit zelf moet doen. In veel gevallen, als je iets heel speciaals in gedachten hebt, kan het ook een stuk eenvoudiger zijn om je eigen plugin sowieso vanuit het niets te schrijven ... dus als je gefrustreerd bent om te proberen een bestaande plug-in te hacken / stylen / configureren werken op uw site, kan dit de oplossing zijn voor uw hoofdpijn!


Vereisten

Om deze tutorial op te volgen, hebt u het volgende nodig:

  • een installatie van de WordPress-site
  • De twitterautomatische klasse van Abraham Williams om twitteracties te manipuleren. Download het voor het moment en sla het lokaal op.
  • een test Twitter-account. (Als je niet al je volgers wilt spammen met de testberichten die we sturen).

De TwitterOAuth-klasse

Het proces van het verkrijgen en plaatsen van gegevens op Twitter vereist de volgende stappen:

  • een applicatie registreren
  • autoriseer uw aanvraag
  • verkrijgen door gegevens te vragen aan de Twitter API

De bovenstaande stappen 2 en 3 kunnen vervelend zijn en kunnen een onderwerp zijn voor een volledige zelfstudie. Daarom raad ik aan om een ​​bibliotheek te gebruiken die deze stappen afhandelt. Degene die ik het leukst vind, is ontwikkeld door Abraham Williams. Het is vrij gemakkelijk te gebruiken, de code is duidelijk en gemakkelijk te begrijpen en is beschikbaar op github.

Met behulp van deze plug-in kunnen we ons ontdoen van de details van het verbinden met Twitter en het verkrijgen van gegevens ervan, aangezien deze taken worden uitgevoerd door de TwitterOAuth-klasse.


Registreer een Twitter-applicatie

Zoals we al besproken hebben, is de eerste stap voor het implementeren van onze plug-in het registreren van een nieuwe Twitter-applicatie. Met deze applicatie krijgen we toegangssleutels waarmee we de vereiste twittergegevens kunnen verkrijgen. Navigeer in je browser naar de Twitter-ontwikkelaarspagina en log in met je testgebruikersaccount. Klik vervolgens op de link 'Een app maken'. Vul het formulier in met de vereiste informatie (u kunt een tijdelijke aanduiding voor de website plaatsen).

Het is erg belangrijk om ook het callback-URL-veld in te vullen, omdat als u het leeg laat, de toepassing het gebruik van callbacks zal beperken. Hoe dan ook, we zullen de waarde die in dit bestand is ingevoerd niet gebruiken, maar een die is geconfigureerd in de WordPress-plug-in.

Ga akkoord met de regels voor ontwikkelaars en vul de captcha-informatie in en druk op de knop 'Uw Twitter-app maken'. U wordt omgeleid naar de pagina in de onderstaande schermafbeelding:

Blader omlaag naar het gedeelte "Uw toegangstoken" en druk op de knop "Mijn toegangstoken maken". Deze actie genereert een toegangstoken en een toegangstokengeheim dat samen met de consumentensleutel en het consumentengeheim wordt gebruikt om in te loggen op Twitter en geautoriseerd te worden voor het uitvoeren van bewerkingen op de Twitter-gegevens..


Stap 0 Bespotten van onze applicatie

Ik weet dat je graag je handen vuil wilt maken door de WordPress-plug-in te schrijven. Maar laten we eerst eens kijken hoe we de TwitterOAuth-klasse kunnen gebruiken. Neem de tijd om het documentatiebestand en de code te bestuderen op github. Daarna zullen we samen een kleine mockup-applicatie ontwikkelen om te kijken of we het met succes kunnen gebruiken.

De belangrijkste bestanden uit de bibliotheek van Abraham zijn die in de map twitteroauth. In feite zijn dit de enige bestanden die de implementatie van de bibliotheek bevatten. De rest van de bestanden zijn slechts een voorbeeld van hoe u de klasse zelf kunt gebruiken.

Mapstructuur

Maak een mappenstructuur zoals hieronder:

Zoals je kunt zien, hebben we voor onze spottoepassing de structuur van het hele project overgenomen van github. We zullen het een beetje aanpassen, omdat we niet alle acties van de demo-app die Abraham Williams heeft geïmplementeerd nodig hebben.

De code voor de spottoepassing

Laten we eens kijken wat we hebben aangepast om de bestanden één voor één te pakken.

index.php

 / * Lib-bestanden laden. * / require_once ('twitteroauth / twitteroauth.php'); require_once (config.php); / * Maak een TwitterOauth-object met consument / gebruiker-tokens. * / $ verbinding = nieuwe TwitterOAuth (CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); / * Als methode is ingesteld, wijzig de API-aanroep. Test wordt standaard aangeroepen. * / $ content = $ connection-> get ('account / verify_credentials'); $ connection-> post ('statussen / update', array ('status' => 'Tekst van status hier')); / * Inclusief HTML om op de pagina weer te geven * / include ('html.inc');

Het index.php-bestand is het beginpunt van onze applicatie. Wanneer u uw site in de browser bezoekt, wordt deze code uitgevoerd. De opmerkingen binnenin maken het vrij duidelijk. De parameters van de bouwer van de TwitterOAuth-klasse zijn afkomstig uit het config.php-bestand dat we binnenkort zullen bezoeken. Nadat we een verbinding met twitter hebben gekregen, moeten we onszelf autoriseren door een get request uit te voeren met 'account / verify_credentials'-parameters.

Het resultaat van de get-aanvraag wordt opgeslagen in de variabele $ content en wordt door het bestand html.inc aan de gebruiker getoond, zodat ook een feedback van de bewerking wordt verstrekt. Om iets op Twitter te plaatsen, voeren we een postverzoek uit met de parameter 'statussen / update' en de tekst die moet worden gepost.

config.php

 / ** * @bestand * Eén locatie om de configuratie op te slaan. * / define ('CONSUMER_KEY', 'store_here_the_consumer_key'); define ('CONSUMER_SECRET', 'store_here_the_consumer_secret'); define ('ACCESS_TOKEN', 'store_here_the_access_token'); define ('ACCESS_TOKEN_SECRET', 'store_here_the_access_token_secret'); define ('OAUTH_CALLBACK', 'http://twitter.dev/callback.php');

Houd er rekening mee dat de OAuth-callback-URL is gebaseerd op de site http://twitter.dev. Dit is de manier waarop ik mijn virtuele host in apache op mijn machine heb gedefinieerd. Je kunt jezelf met een andere naam definiëren.

In dit bestand definiëren we onze constanten. De eerste vier zijn parameters in de TwitterOAuth-constructor (zie hierboven) en de laatste vervangt de callback-URL die we hebben ingevoerd toen de toepassing werd gedefinieerd. Je krijgt de eerste vier constanten van de Twitter-applicatie.

html.inc

Ik zal de code hier niet vermelden, omdat het vrij eenvoudig is, je kunt het krijgen via de sectie Downloads. Het maakt een koptekst voor de pagina en geeft in het inhoudsgebied alleen de variabele $ content weer. Ons doel is om een ​​tweet op Twitter te krijgen, dus dit bestand is alleen om feedback te krijgen over onze verzoeken.

Checkpoint

Geweldig, onze mock-up applicatie is afgelopen. Het is tijd om te zien wat we tot nu toe hebben gedaan. Dus bezoek uw site in uw browser en bekijk uw test twitter-account. Je zou daar een tweet moeten hebben met de tekst: "Tekst van de status hier".


Stap 1 Bereid de mapstructuur voor

Nu we begrijpen hoe we de bibliotheek kunnen gebruiken, kunnen we beginnen met het ontwikkelen van onze WordPress-plug-in.

We moeten enkele regels volgen om onze plug-in te integreren in WordPress. Dus stap in je WordPress installatiemap en ga naar de map wp-content / plugins en maak een directorystructuur zoals die in de onderstaande afbeelding:

Abraham Williams-bibliotheekcode wordt opgeslagen in de lib-map en de klasse die we ontwikkelen in de map includes. In het index.php-bestand in de hoofdmap van onze submap slaan we de code op die WordPress-actie triggert.


Stap 2 Maak de plug-inscode

Eindelijk zijn we daar. We zullen beginnen met het schrijven van de code van onze plug-in. Enkele ontwerpoverwegingen: we kunnen al onze code opslaan in het index.php-bestand en dit kan een goede optie zijn voor een eenvoudige plug-in. Maar ik besloot om de code in een apart bestand in een klasse op te slaan (opgeslagen in de map include), vanwege twee redenen. De belangrijkste is dat als we dit soort dingen doen, het uitbreiden van de functionaliteit van de plug-in later gemakkelijker wordt dan het opslaan van alle codes in één bestand. Ten tweede wil ik je laten zien hoe de plugin-code kan worden geschreven in een klasse.

Laat WordPress weten over onze plug-in

WordPress moet weten dat we een plug-in hebben ontwikkeld en deze graag willen integreren met het hoofdsysteem. Dit gebeurt via verschillende regels met opmerkingen in het hoofdbestand van de pugin (in ons geval index.php). Open index.php in uw favoriete editor en voer de volgende code in:

 / * Naam van plug-in: myTweet plug-in URI: http://www.google.com/ Beschrijving: deze plug-in tweet naar het Twitter-account van de auteur wanneer een nieuw bericht op WordPress wordt geplaatst. De tweet zal de volgers informeren over de titel van de nieuwe post. Auteur: Gabriel Cirtea Versie: 1.0 Auteur URI: http://www.google.com/ * /

WordPress verwacht dat deze informatie aanwezig is in het hoofdbestand van de plug-in. Hier hebben we de naam van de plug-in gedefinieerd, de URI (die op dit moment naar Google verwijst omdat we geen site voor onze plug-in hebben ontwikkeld). Ook worden een beschrijving, auteur en versie van de plug-in gegeven. Dit is de enige informatie die nodig is om een ​​plug-in te ontwikkelen. Natuurlijk zal zo'n plug-in niets doen, maar wel aanwezig zijn in de plug-inslijst van uw WordPress-site.

Ga je gang en controleer dit ... Sla je bestand op, log in op je site en ga naar de plug-ins pagina. Je zou zoiets als in de onderstaande afbeelding moeten zien:


Stap 3 Onze arbeidersklasse

Onze arbeidersklasse heeft twee taken. Een daarvan is om de klasse TwitterOAuth te initialiseren en in te loggen bij de applicatie en de tweede zal zijn om de tweet uit te voeren die de wereld aankondigt over onze nieuwe post op WordPress.

We zullen in de klas als constanten de sleutels opslaan die we van onze Twitter-applicatie hebben gekregen. We zullen ook een beschermde variabele hebben die de verbinding met Twitter opslaat. Deze verklaring van onze klas ziet eruit als:

 // constanten gedefinieerd voor toegang tot de TwitterOAuth-klasse const CONSUMER_KEY = 'uw_consument_key_hier'; const CONSUMER_SECRET = 'your_consumer_secret_here'; const ACCESS_TOKEN = 'your_access_token_here'; const ACCESS_TOKEN_SECRET = 'uw_access_token_secret_here'; // klassevariabelen beschermd statische $ verbinding;

De init-functie

De init-functie is verantwoordelijk voor het maken van een instantie van de klasse TwitterOAurh en het opslaan van de terugkeer van de constructor in de $ connection variable. De code is de volgende:

 public static function init () self :: $ connection = new TwitterOAuth (self :: CONSUMER_KEY, self :: CONSUMER_SECRET, self :: ACCESS_TOKEN, self :: ACCESS_TOKEN_SECRET); 

De tweet-functie

De tweet-functie is gekoppeld aan WordPress save_post-actie en ontvangt als een parameter het bericht-ID. Met die post-id krijgt het de post-inhoud als een array. We gebruiken deze array om de berichttitel te krijgen die we vervolgens gebruiken voor tweeten op basis van de $ -verbindingsvariabele die in de klas is opgeslagen.

 openbare statische functie tweet ($ postID) // postgegevens ophalen $ post = get_post ($ postID); // stuur zelf een tweet-verzoek: $ connection-> post ('statussen / update', array ('status' => $ post-> post_title)); 

De volledige code van onze arbeidersklasse ziet er als volgt uit:

 / ** * class TwitterCommands * * Deze les is bedoeld als interface tussen onze Twitter-plugin * en de twitteroauth-klasse gemaakt door Abraham Williams. * * Er wordt een instantie van de TwitterOAuth-klasse gemaakt en de * vereiste opdrachten worden verzonden om een ​​tweet te plaatsen wanneer een nieuwe post aan * de WordPress-site wordt toegevoegd. * / class TwitterCommands // constanten gedefinieerd voor toegang tot de TwitterOAuth-klasse const CONSUMER_KEY = 'uw_consument_key_hier'; const CONSUMER_SECRET = 'your_consumer_secret_here'; const ACCESS_TOKEN = 'your_access_token_here'; const ACCESS_TOKEN_SECRET = 'uw_access_token_secret_here'; // klassevariabelen beschermd statische $ verbinding; public static function init () self :: $ connection = new TwitterOAuth (self :: CONSUMER_KEY, self :: CONSUMER_SECRET, self :: ACCESS_TOKEN, self :: ACCESS_TOKEN_SECRET);  openbare statische functie tweet ($ postID) $ post = get_post ($ postID); self :: $ connection-> post ('statussen / update', array ('status' => $ post-> post_title)); 

Verbind je met WordPress

Aansluiten bij WordPress betekent dat WordPress uw functies moet bellen wanneer zich een specifieke gebeurtenis voordoet. Het kan in twee verschillende modi: door filters te gebruiken en door acties te gebruiken. De functie die u gebruikt om in te haken is add_action of add_filter. Welke u moet gebruiken, wordt gespecificeerd in de WordPress-documentatie. Als de gebeurtenis die u wilt koppelen een actie is, gebruik dan add_action anders gebruik add filter.

Voor onze Twitter-plug-in nemen we deel aan twee evenementen: de actie init en de actie save_post. De init-actie wordt aangeroepen wanneer de pagina is geladen en we zullen deze actie gebruiken om verbinding te maken met Twitter. De save_post-actie wordt aangeroepen wanneer de gebruiker een post maakt en bijwerkt, zodat we deze zullen gebruiken om te Tweet. De code staat hieronder:

 / * Naam van de plug-in: Tweet URI-plug-in: http://www.tipsfor.us/ Beschrijving: Deze plug-in tweet naar het Twitter-account van de auteur wanneer er een nieuw bericht op WordPress wordt geplaatst. hij tweet zal de volgers informeren over de titel van de nieuwe post. Auteur: Gabriel Cirtea Versie: 1.0 Auteur URI: http://www.tipsfor.us/ * / // include () of eis () de nodige bestanden hier ... require_once ('lib / twitteroauth / twitteroauth.php'); require_once ('includes / TwitterCommands.php'); // instellingen en / of configuratiegegevens ga hier ... // bind in op WordPress-hooks en alle functies die moeten worden uitgevoerd bij het laden van add_action ('init', 'TwitterCommands :: init'); add_action ('save_post', 'TwitterCommands :: tweet'); // private interne functies met de naam een ​​van de belangrijkste underscore // -functies, opgeroepen door de filters of acties

Bovenstaande code heeft een kleine bug met opzet in zich om een ​​oefening voor je te maken. Zoals ik heb aangegeven, wordt de actie save_post aangeroepen wanneer de gebruiker een bericht maakt of bijwerkt. Daarom wordt het tweemaal aangeroepen wanneer de gebruiker een bericht heeft gemaakt en het bericht geen inhoud heeft en wanneer het bericht is opgeslagen. Dit zal leiden tot tweeten één keer tweeten met een berichttitel gegeven door WordPress standaard en ten tweede met de titel gegeven door de gebruiker. U moet deze bug repareren met elke methode die u geschikt vindt, misschien plaatst u uw oplossing in de comments.


Dat is het!

Wel, het was niet zo moeilijk, toch? Het schrijven van deze plug-in was vrij eenvoudig en we leerden ook hoe we de code van anderen konden hergebruiken. U kunt dit voorbeeld uitbreiden met andere dingen die u wilt doen, u kunt bijvoorbeeld proberen een direct bericht naar iemand te sturen.

Vergeet niet om de WordPress en Twitter documentatie te controleren:

  • http://codex.wordpress.org
  • https://dev.twitter.com/
  • WordPress 3 Plugin Development Essentials - een buitengewoon interessant en nuttig boek om WordPress plug-in programmeren te leren.