Créez votre propre plugin Twitter personnalisé pour WordPress

Vous venez de publier un article génial sur votre blog WordPress et vous voudriez en parler à tout le monde. Avez-vous un compte Twitter? Développons ensuite un plugin qui, chaque fois que vous enregistrez un nouveau message sur WordPress, tweete automatiquement, ce qui permet à tous vos abonnés de savoir qu'ils peuvent trouver quelque chose de nouveau sur votre blog. Commençons!


Pourquoi créer un plugin Twitter à partir de zéro?

Bien qu'il existe un grand nombre d'excellents plug-ins gratuits pour Twitter, les auteurs pensent qu'il n'existe pas de solution de rechange pour savoir comment faire ce travail soi-même. Dans de nombreux cas, si vous avez quelque chose de très spécifique à l'esprit, il peut être beaucoup plus facile d'écrire votre propre plugin de toute façon… alors si vous êtes frustré d'essayer de pirater / styler / configurer un plugin existant pour travailler sur votre site, cela pourrait être la solution à vos maux de tête!


Exigences

Pour suivre ce tutoriel, vous avez besoin des éléments suivants:

  • une installation de site WordPress
  • La classe twitteroauth d’Abraham Williams pour manipuler les actions de twitter. Pour le moment, téléchargez-le et stockez-le localement.
  • un compte Twitter test. (Si vous ne souhaitez pas envoyer de spam à tous vos abonnés avec les messages de test que nous vous enverrons).

La classe TwitterOAuth

Le processus d'obtention et de publication de données sur Twitter nécessite les étapes suivantes:

  • enregistrer une application
  • autoriser votre application
  • obtention par des données interrogeant l'API Twitter

Les étapes 2 et 3 ci-dessus peuvent être fastidieuses et faire l’objet d’un tutoriel complet. Par conséquent, je recommande d'utiliser une bibliothèque qui gère ces étapes. Celui que j'aime le plus a été développé par Abraham Williams. Il est assez facile à utiliser, le code est clair et facile à comprendre et est disponible sur github.

En utilisant ce plugin, nous pouvons nous débarrasser des détails de la connexion à Twitter et en obtenir des données puisque ces tâches sont effectuées par la classe TwitterOAuth..


Enregistrer une application Twitter

Comme nous en avons déjà discuté, la première étape de la mise en œuvre de notre plugin consiste à enregistrer une nouvelle application Twitter. Avec cette application, nous obtiendrons des clés d'accès nous permettant d'obtenir les données Twitter requises. Naviguez dans votre navigateur vers la page des développeurs Twitter et connectez-vous avec votre compte utilisateur test. Cliquez ensuite sur le lien "Créer une application". Remplissez le formulaire avec les informations requises (vous pouvez mettre un espace réservé pour le site web).

Il est très important de renseigner également le champ URL de rappel, car le laisser vide empêcherait l'application d'utiliser les rappels. Quoi qu'il en soit, nous n'utiliserons pas la valeur entrée dans ce fichier, mais celle configurée dans le plugin WordPress.

Acceptez les règles du développeur et renseignez les informations captcha, puis cliquez sur le bouton "Créer votre application Twitter". Vous serez redirigé vers la page dans la capture d'écran ci-dessous:

Faites défiler jusqu'à la section "Votre jeton d'accès" et cliquez sur le bouton "Créer mon jeton d'accès". Cette action générera un jeton d'accès et un secret de jeton qui, conjointement avec la clé de consommateur et le secret de consommateur, sont utilisés pour se connecter à Twitter et être autorisés à effectuer des opérations sur les données de Twitter..


Étape 0: se moquer de notre application

Je sais que vous avez hâte de vous salir les mains en écrivant le plugin WordPress. Mais avant, voyons comment utiliser la classe TwitterOAuth. Prenez votre temps pour étudier son fichier de documentation et son code sur github. Après cela, nous développerons ensemble une petite application de maquette pour voir si nous pouvons l’utiliser avec succès..

Les fichiers les plus importants de la bibliothèque d'Abraham sont ceux du dossier twitteroauth. En fait, ce sont les seuls fichiers contenant l’implémentation de la bibliothèque. Le reste des fichiers n'est qu'un exemple d'utilisation de la classe..

Structure des dossiers

Préparez une structure de dossier comme ci-dessous:

Comme vous pouvez le constater, pour notre application de simulation, nous avons repris la structure de l’ensemble du projet auprès de github. Nous allons le modifier un peu car nous n'avons pas besoin de toutes les actions de l'application de démonstration Abraham Williams mise en œuvre.

Le code pour l'application moqueuse

Vérifions ce que nous avons modifié en prenant les fichiers un par un.

index.php

 / * Charge les fichiers lib requis. * / require_once ('twitteroauth / twitteroauth.php'); require_once ('config.php'); / * Crée un objet TwitterOauth avec des jetons consommateur / utilisateur. * / $ connection = new TwitterOAuth (CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); / * Si la méthode est définie, changer l'appel de l'API effectué. Test est appelé par défaut. * / $ content = $ connection-> get ('account / verify_credentials'); $ connection-> post ('statuses / update', array ('status' => 'Texte de status here')); / * Inclure le code HTML à afficher sur la page * / include ('html.inc');

Le fichier index.php est le point d’entrée de notre application. Lorsque vous visitez votre site dans le navigateur, ce code est exécuté. Les commentaires à l'intérieur le rendent assez explicite. Les paramètres du constructeur de la classe TwitterOAuth sont extraits du fichier config.php que nous visiterons bientôt. Après avoir établi une connexion à Twitter, nous devons nous autoriser en effectuant une requête get avec les paramètres 'account / verify_credentials'.

Le résultat de la requête get est stocké dans la variable $ content et sera affiché à l'utilisateur par le fichier html.inc, de sorte qu'un retour de l'opération est également fourni. Pour publier quelque chose sur Twitter, nous effectuons une demande de publication avec le paramètre "statuts / mise à jour" et le texte à publier..

config.php

 / ** * @file * Un emplacement unique pour stocker la configuration. * / 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');

Notez que l'URL de rappel OAuth est basée sur le site http://twitter.dev. C’est ainsi que j’ai défini mon hôte virtuel dans Apache sur ma machine. Vous pouvez vous définir avec un autre nom.

Dans ce fichier, nous définissons nos constantes. Les quatre premiers sont des paramètres du constructeur TwitterOAuth (voir ci-dessus) et le dernier remplace l'URL de rappel que nous avons entrée lors de la définition de l'application. Vous obtenez les quatre premières constantes de l'application Twitter.

html.inc

Je ne vais pas énumérer le code ici car c'est assez simple, vous pouvez l'obtenir à partir de la section Téléchargements. Il crée un en-tête pour la page et, dans la zone de contenu, affiche simplement la variable $ content. Notre objectif est de créer un tweet sur Twitter. Ce fichier sert donc uniquement à obtenir un retour d'informations sur nos demandes..

Point de contrôle

Génial, notre application de maquette est terminée. Il est temps de voir ce que nous avons fait jusqu'à présent. Alors, visitez votre site dans votre navigateur, puis vérifiez votre compte Twitter de test. Vous devriez y avoir un tweet avec le texte: "Texte du statut ici".


Étape 1 Préparez la structure du dossier

Maintenant que nous savons utiliser la bibliothèque, nous pouvons commencer à développer notre plugin WordPress.

Nous devons suivre certaines règles afin d'intégrer notre plugin dans WordPress. Entrez donc dans votre dossier d’installation WordPress et dans le dossier d’accès à wp-content / plugins et créez une structure de répertoires similaire à celle de l’illustration ci-dessous:

Le code de la bibliothèque d’Abraham Williams sera stocké dans le dossier lib et la classe que nous développons dans le dossier includes. Dans le fichier index.php à la racine de notre sous-dossier, nous allons stocker le code qui déclenche l'action WordPress.


Étape 2 Créer le code du plugin

Enfin nous sommes là. Nous allons commencer à écrire le code de notre plugin. Quelques considérations de conception: nous pouvons stocker tout notre code dans le fichier index.php et cela peut être une bonne option pour un plugin simple. Mais j'ai décidé de stocker le code dans un fichier séparé dans une classe (stocké dans le dossier includes), pour deux raisons. Le principal est que, si nous procédons ainsi, étendre les fonctionnalités du plug-in devient plus facile que de disposer de tout le code stocké dans un seul fichier. Deuxièmement, je veux vous montrer comment le code du plugin peut être écrit dans une classe.

Informez WordPress de notre plugin

WordPress doit savoir que nous avons développé un plugin et souhaiterions l'intégrer au système principal. Cela se fait via plusieurs lignes de commentaires dans le fichier principal de la pugin (dans notre cas, index.php). Ouvrez index.php dans votre éditeur favori et entrez le code suivant:

 / * Nom du plugin: myTweet Plugin URI: http://www.google.com/ Description: Ce plugin tweetera sur le compte Twitter de l'auteur chaque fois qu'un nouveau message est placé sur WordPress. Le tweet informera les abonnés du titre du nouveau message. Auteur: Gabriel Cirtea Version: 1.0 URI de l'auteur: http://www.google.com/ * /

WordPress s'attend à ce que ces informations soient présentes dans le fichier principal du plugin. Ici, nous avons défini le nom du plugin, il s’agit de l’URI (qui, pour le moment, renvoie à Google puisque nous n’avons pas développé de site pour notre plugin). Une description du plugin, son auteur et sa version sont également fournis. C'est la seule information requise pour développer un plugin. Bien sûr, un tel plugin ne fera rien, mais sera présent dans la liste des plugins de votre site WordPress.

Allez-y et vérifiez ceci… Enregistrez votre fichier, connectez-vous à votre site et accédez à la page des plugins. Vous devriez voir quelque chose comme dans l'image ci-dessous:


Étape 3 Notre classe de travailleurs

Notre classe de travailleurs aura deux tâches. L'une consistera à initialiser la classe TwitterOAuth et à se connecter à l'application et la seconde à exécuter le tweet qui annonce le monde à propos de notre nouveau message sur WordPress..

Nous allons stocker dans la classe sous forme de constantes les clés obtenues de notre application Twitter. Nous aurons aussi une variable protégée stockant la connexion à Twitter. Cette déclaration de notre classe ressemble à:

 // constantes définies pour accéder à la classe TwitterOAuth const CONSUMER_KEY = 'your_consumer_key_here'; const CONSUMER_SECRET = 'votre_consommateur_secret_ici'; const ACCESS_TOKEN = 'your_access_token_here'; const ACCESS_TOKEN_SECRET = 'votre_access_token_secret_here'; // variables de classe protégées static $ connection;

La fonction init

La fonction init est chargée de créer une instance de la classe TwitterOAurh et de stocker le retour du constructeur dans la variable $ connection. Le code est le suivant:

 fonction statique publique init () self :: $ connection = new TwitterOAuth (self :: CONSUMER_KEY, self :: CONSUMER_SECRET, self :: ACCESS_TOKEN, self :: ACCESS_TOKEN_SECRET); 

La fonction tweet

La fonction tweet est liée à l'action save_post de WordPress et reçoit en paramètre l'identifiant de publication. Avec cet identifiant de publication, il obtient le contenu de la publication sous forme de tableau. Nous utilisons ce tableau pour obtenir le titre de l'article que nous utilisons ensuite pour tweeter en fonction de la variable $ connection stockée dans la classe.

 fonction statique publique tweet ($ postID) // récupère les données postales $ post = get_post ($ postID); // envoie une demande tweet self :: $ connection-> post ('statuses / update', array ('status' => $ post-> post_title)); 

Le code complet de notre classe de travailleurs ressemble à ce qui suit:

 / ** * class TwitterCommands * * Cette classe se veut une interface entre notre plugin Twitter * et la classe twitteroauth créée par Abraham Williams. * * Il créera une instance de la classe TwitterOAuth et lui enverra les * commandes nécessaires pour placer un tweet lorsqu'un nouveau message est ajouté sur * le site WordPress. * / class TwitterCommands // constantes définies pour accéder à la classe TwitterOAuth const CONSUMER_KEY = 'your_consumer_key_here'; const CONSUMER_SECRET = 'votre_consommateur_secret_ici'; const ACCESS_TOKEN = 'your_access_token_here'; const ACCESS_TOKEN_SECRET = 'votre_access_token_secret_here'; // variables de classe protégées static $ connection; fonction statique publique init () self :: $ connection = new TwitterOAuth (self :: CONSUMER_KEY, self :: CONSUMER_SECRET, self :: ACCESS_TOKEN, self :: ACCESS_TOKEN_SECRET);  fonction statique publique tweet ($ postID) $ post = get_post ($ postID); self :: $ connection-> post ('statuses / update', tableau ('status' => $ post-> post_title)); 

Accrochez-vous à WordPress

Se connecter à WordPress signifie faire en sorte que WordPress appelle vos fonctions lorsqu'un événement spécifique se produit. Cela peut être fait dans deux modes différents: en utilisant des filtres et en utilisant des actions. La fonction que vous utilisez pour vous connecter est soit add_action, soit add_filter. Lequel vous devriez utiliser est spécifié dans la documentation de WordPress. Si l'événement auquel vous souhaitez vous connecter est une action, utilisez add_action, sinon utilisez add filter.

Pour notre plugin Twitter, nous nous associons à deux événements: l'action init et l'action save_post. L'action init est appelée lorsque la page est chargée et nous allons utiliser cette action pour se connecter à Twitter. L'action save_post est appelée chaque fois que l'utilisateur crée et met à jour un message afin que nous l'utilisions pour Tweet. Le code est listé ci-dessous:

 / * Nom du plugin: Tweet Plugin URI: http://www.tipsfor.us/ Description: Ce plugin va tweeter sur le compte Twitter de l'auteur lorsqu'un nouveau message est placé sur WordPress. Ce tweet informera les abonnés du titre du nouveau message. Auteur: Gabriel Cirtea Version: 1.0 URI de l'auteur: http://www.tipsfor.us/ * / // include () ou require () tous les fichiers nécessaires ici… require_once ('lib / twitteroauth / twitteroauth.php'); require_once ('includes / TwitterCommands.php'); // les paramètres et / ou les détails de configuration vont ici… // se lient aux points d'ancrage de WordPress et à toutes les fonctions devant s'exécuter lors du chargement add_action ('init', 'TwitterCommands :: init'); add_action ('save_post', 'TwitterCommands :: tweet'); // fonctions internes privées désignées par un trait de soulignement // / fonctions appelées par les filtres ou les actions

Le code ci-dessus contient intentionnellement un petit bogue qui crée un exercice pour vous. Comme je l'ai spécifié, l'action save_post est appelée lorsque l'utilisateur crée ou met à jour une publication. Par conséquent, il sera appelé deux fois lorsque l'utilisateur a créé un article et que l'article n'a pas de contenu et lorsque l'article est enregistré. Cela conduira à tweeter deux fois, l'une avec un titre de publication attribué par défaut à WordPress et l'autre avec le titre attribué par l'utilisateur. Vous devez corriger ce bogue en utilisant la méthode que vous jugez appropriée, peut-être même poster votre solution dans les commentaires..


C'est tout!

Eh bien, ce n'était pas si difficile, n'est-ce pas? L'écriture de ce plugin était assez facile et nous avons également appris à réutiliser le code des autres. Vous pouvez étendre cet exemple à d’autres choses que vous voulez faire, par exemple, vous pouvez essayer d’envoyer un message direct à quelqu'un..

N'oubliez pas de consulter la documentation WordPress et Twitter:

  • http://codex.wordpress.org
  • https://dev.twitter.com/
  • WordPress 3 Plugin Development Essentials - un livre extrêmement intéressant et utile pour apprendre la programmation de plugins WordPress.