Finalidad de Pay with Tweet
Pay with Tweet es un plugin que he desarrollado para WordPress cuya finalidad es permitir a los usuarios de un sitio web acceder a descargas concretas a cambio de publicar en su Twitter el mensaje que determine el administrador del sitio a la hora de crear el botón de Pay with Tweet.
Origen del plugin Pay with Tweet
Este plugin nace en la primera edición del Máster oficial en Dirección de Arte en Publicidad por la Universidad de Vigo en el que tuve el honor de participar como ponente hablando de WordPress y Joomla.
El en proyecto que estábamos montando utilizábamos un plugin existente en WP para incluir el Pay with Tweet. A pesar de que el día anterior había comprobado su correcto funcionamiento, cuando llegó el momento de utilizarlo en el máster obtuvimos un fantástico error500 a la hora de aceptar el acceso de nuestra aplicación a Twitter para realizar la acción de Pay with Tweet.
Quien me conoce sabe que este tipo de errores inesperados sacan a relucir mi lado oscuro y en un momento de esos muy míos de ***************** decidí que iba a hacer un plugin para ofrecer este servicio de Pay with Tweet y que ésta sería mi primera contribución a WordPress.
Y así ha sido… también creo que un motivo muy bueno para llevar a cabo este plugin 😀
Documentación de código
El plugin Pay with Tweet incorpora un directorio docs dónde se encuentra la documentación del código en formato HTML, por lo que accediendo vía web a este directorio se podrá ver la documentación de código.
He cuidado especialmente la elaboración de una documentación de código, aunque ésta irá mejorando con el tiempo. Por supuesto, el HTML disponible en el directorio docs no es más que la vista HTML de la documentación que se encuentra dentro del código fuente, como debe ser 😉
Ayuda para Pay with Tweet
En mi canal de YouTube he creado una lista de reproducción para alojar los video-tutoriales de Pay with Tweet. Se irán incorporando los diferentes video-tutoriales poco a poco.
También tanto en la versión de github como de wordpress.com existe un bug track desde el cual se puede contactar conmigo para realizar aportes o informar de errores.
Configuración de Pay with Tweet
Para poder utilizar el plugin es necesario crear una aplicación en Twitter e incorporar el consumer key y el consumer secret.
A la hora de crear la aplicación es necesario establecer correctamente la callback URL. Esta dirección se encuentra en la pantalla de configuración del plugin.
En el siguiente vídeo se muestra el proceso para crear la aplicación en Twitter y configurar correctamente el plugin:
Características del plugin Pay with Tweet
El plugin está realizado buscando, en todo momento, utilizar las API’s de WordPress pone a disposición de los desarrolladores. De hecho, existen otros plugins que proporcionan el mismo servicio, pero que acceden directamente a archivos del núcleo de WordPress en vez de utilizar las vías que WordPress dispone (y recomienda). Este plugin no accede directamente a archivos del núcleo, haciendo que absolutamente todo el plugin corra bajo el flujo predispuesto de WordPress, lo cual es algo muy recomendable y positivo. 🙂
El funcionamiento del plugin es sencillo gracias a la división de tareas por pantallas. De esta forma, cualquier archivo que se quiera utilizar como descarga se subirá desde una pantalla, de forma que se puedan subir varios ficheros a la vez y será en otra pantalla en la cual se creen los botones de Pay with Tweet.
Gestor de descargas
- Los ficheros destinados a ser utilizados en «Pay with a Tweet» se suben desde una pantalla de la administración.
- Para la subida de archivos se utiliza el sistema de subida de archivos de WordPress.
- Los archivos subidos no forman parte del gestor de medios de WordPress.
- Los archivos no son accesibles vía web.
- Cuando se elimina un archivo se eliminan todos los botones que la utilizan.
- Acceso a la creación de un botón desde la subida de archivos.

Cuando suben los archivos, se muestran con un enlace para crear un nuevo botón con el archivo deseado!
Gestor de botones
- Cada botón creado se vincula a un archivo. Pueden existir varios botones vinculados al mismo archivo.
- En cada botón se puede establecer un título, la imagen a utilizar como botón y el texto a publicar como tweet.
- Los botones se pueden eliminar o eliminar permanentemente. Esta segunda opción eliminará también la imagen y el archivo del botón.

Cada botón tiene su propio texto para tweet, puede tener su imagen (o reciclar una existente) y puedes seleccionar la descarga
Soporte a varios idiomas
El plugin incorpora el idioma inglés y español. Además, en el directorio languages se puede obtener el fichero .po para realizar la traducción en otros idiomas.
La compatibilidad con el plugin WPML está pendiente para futuras versiones.
Shortcodes
El plugin incorpora un shortcode estilo para poder incorporar el botón en cualquier lugar de una entrada o página.
Widgets
El plugin incorpora un widget para colocar el botón en los sidebars. El widget permite introducir un título, un texto a mostrar antes del botón y un desplegable con los botones disponibles para seleccionar el deseado.
Proceso de descarga
Cuando un usuario clique en el botón/enlace para descargar el fichero, tendrá que aceptar dar acceso al sitio web para publicar el tweet asociado al botón, una vez publicado correctamente, la descarga se lanza automáticamente.
El plugin no almacena el access_token del usuario por lo que el plugin no podrá publicar tweets en la cuenta del usuario en ningún momento salvo cuando el usuario, expresamente, clica en descargar fichero.
Estadísticas
- Cuando se descarga un fichero a través de un botón de pay with a tweet, se guarda la referencia de esta descarga con fines estadísticos.
Está contemplado para futuras versiones mostrar las estadísticas de descargas por botón.
Resultado de ejemplo
En este sitio web está instalado el plugin Pay with a Tweet, he creado un fichero PDF con el contenido de esta página y lo e incorporado al plugin para crear un botón con él.
Para visualizar el botón, en vez de utilizar el widget, he puesto el shortcode, siendo el resultado la imagen siguiente:

Descargar Pay with Tweet
Actualmente existen dos lugares desde los cuales se puede descargar el plugin Pay with Tweet.
Si quieres utilizar el plugin para un sitio en producción lo mejor es descargarlo desde WordPress.com ya que allí se encuentran las versiones estables del plugin:
http://wordpress.org/plugins/pay-with-a-tweet/
Si por el contrario quieres probarlo en un sitio en desarrollo o eres todo un valiente, el desarrollo activo del plugin está en github. Eso sí, ten en cuenta que la vía oficial es WordPress, el uso de la versión de github debería estar limitada a lo conocido como «cacharreo», para estudiar el código o para colaborar con el plugin.
https://github.com/rolando-caldas/pay-with-a-tweet-wp-plugin
Hola Rolando,
He seguido los pasos, y el enlace en el que al final pincha el usuario en mi web es del tipo:
http://nombredemiweb.com/blog/pay-with-a-tweet/download/?id=5&action=get_access
¿Eso es correcto? El propio WordPress me da página no encontrada y ahí termina el asunto…
Gracias por tu ayuda
Hola ervija,
La url que indicas es correcta. Si las pruebas las estás realizando en local es normal que de ese error. También es normal que falle si el dominio desde el que estás probando es diferente al dominio de la URL indicada en dev twitter como callback.
La URL que indicas es la que inicia la comunicación con Twitter. Twitter espera que se haga todo desde el dominio indicado en la ruta del callback. Además, cuando Twitter intente compartir información con la URL que indicas, si es local, no lo conseguirá.
Si todo lo anterior no fuese tu caso, ¿tienes los enlaces permanentes de WordPress personalizado? o estás con el sistema predeterminado. Pensando en los posibles problemas, no lo probé en el caso de una instalación sin el .htaccess de las urls amigables, es algo que he de comprobar lo antes posible.
Saludos
Hola de nuevo,
No estoy probando en local. Estoy probando en un post de un blog que tengo, y en el que he incluido el «shortcode». En cuanto pincho en el botón me da «página no encontrada» el propio WordPress.
Respecto a la Callback URL, es la misma que te he puesto, pero sin los parámetros (es decir, hasta el «download», por lo que eso creo que está bien.
Lo que sí tengo activados son los enlaces permanentes, del tipo: http://nombredemiweb.com/blog/sample-post/, no sé si ese será el problema.
¿Me puedes dar un ejemplo de web en la que esté funcionando bien el plugin?
¡Gracias!
He actualizado esta página con un ejemplo de descarga, lo he probado y parece ir OK. Lo tienes en la parte final de la página en «Resultado de ejemplo».
Asegúrate de estar con la última versión del plugin (1.0.2). Si quieres puedes enviarme por correo (está en http://rolandocaldas.com/sobre-mi) unos datos de acceso con permisos para revisar/comprobar el plugin en el blog dónde lo tienes instalado.
Un saludo
Tengo el mismo problema que javi, si pongo imagen se imprime parte del código como texto, si no la pongo se imprime el texto correctamente, pero en cualquier caso el enlace lleva siempre a una página de error. Podeis verlo en http://www.todotutoriales.es/2013/06/28/wordpress-hoja-de-estilos-css-por-defecto/
Buenos días,
Si me facilitas por correo electrónico datos para acceder a la administración y poder comprobar el funcionamiento y el tipo de error que genera… Aunque antes de nada si no lo tienes actualizado a la v1.0.2 es importante actualizarlo ya que en esta versión es cuando se cambió el uso de la API de Twitter a la 1.1
saludos
Hola chicos,
He tenido unos días muy complicados y no he podido volver a retomar el tema hasta ahora. He visto que todotuto ya funciona. ¿Cuál fue el problema?
Gracias.
En nuestro caso tenemos la v1.0.2 y nada, sigue sin funcionar…
Un saludo.
Buenas,
Creo que todotuto está utilizando un servicio externo para ello. Si te parece bien, puedes facilitarme datos de acceso al ftp y una cuenta con permisos en la web para verte el problema, seguramente se detecte el problema antes. Estuve haciendo lo mismo con una persona que tenía un problema con el plugin (otro diferente) y en su caso resultó ser un conflicto con algo «extraño» que tenía instalado. Si prefieres no facilitarme datos de acceso (lo cual sería comprensible claro) lo intentaríamos por otra vía, aunque más larga claro 😉
saludos!
El problema indicado por Javi se ha podido solucionar (gracias a su colaboración). Había un error del plugin cuando wordpress no estaba instalado en el directorio raíz. Se soluciona en la v1.0.3
http://i.imgur.com/UpMkm0Z.png
Hi Rolando, I did not understand what was the problem.
Hola Rolando, yo no entendía cuál era el problema.
Hi.
You need activate the pretty urls in options permalink (http://www.example.com/wp-admin/options-permalink.php). If you have checked the default option, you must check another and save. Then in your FTP wordpress folder, you will have a .htaccess file, this file «activates» the pretty urls. The pay-with-a-tweet plugin requires the pretty urls.
Thanks Rolando 🙂
Fatal error: Cannot redeclare class TwitterOAuth in /home1/….html/wp-content/plugins/pay-with-a-tweet/lib/twitteroauth.php on line 15
No se ni que puede llegar a ser revise todo y esta bien pero no funciona.. Si tienes alguna ida sería genial gracias
Hola UYsuar, ese error indica que la clase TwitterOAuth se está intentando definir dos veces, por eso te da error. ¿tienes la última versión del plugin? ¿algún otro plugin instalado que se conecte con redes?
saludos
I get 404 error after the process is done when testing from my own domain is this normal? Is the plugin working? here is the URL I see bit no file is downloaded http://getondemandtraffic.com/pay-with-a-tweet/download/?id=2&action=download
Hi Bryan
How can I test your download? Please give me an URL to check your issue.
Hi it was in my post (http://getondemandtraffic.com/pay-with-a-tweet/download/?id=2&action=download) but let me know if you need something different or temp access to my WP installation
Hello Bryan
The error is a 401 error, not 404 😉
You have to check the permissions of your twitter application. It’s necessary that your app has write permissions. Compare your options with the sample video (http://www.youtube.com/watch?v=AO1_-vrLPZ0)
Thanks that was the problem it works fine now!
After I corrected the Twitter API it was working but now the plugin is giving errors:
(My DIR Username and download file blanked out for obvious reasons)
Warning: file_get_contents(/home4/******/public_html/getondemandtraffic.com/wp-content/uploads/pay-with-a-tweet/MY FLIE NAME.zip) [function.file-get-contents]: failed to open stream: No such file or directory in /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php on line 178
Warning: Cannot modify header information – headers already sent by (output started at /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php:178) in /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php on line 182
Warning: Cannot modify header information – headers already sent by (output started at /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php:178) in /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php on line 183
Warning: filesize() [function.filesize]: stat failed for /home4/******/public_html/getondemandtraffic.com/wp-content/uploads/pay-with-a-tweet/On-Demand-Traffic-Videos.zip in /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php on line 184
Warning: Cannot modify header information – headers already sent by (output started at /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php:178) in /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php on line 184
Warning: Cannot modify header information – headers already sent by (output started at /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php:178) in /home4/******/public_html/getondemandtraffic.com/wp-content/plugins/pay-with-a-tweet/inc/action.php on line 185
Hello
It seems that doesn’t exist your file «/home4/******/public_html/getondemandtraffic.com/wp-content/uploads/pay-with-a-tweet/MY FLIE NAME.zip».
The folder /wp-content/uploads/pay-with-a-tweet/ requires write permissions to upload the files… so…
1. Remove the pay-with-a-tweet downloads.
2. Connect to FTP and set the CHMOD of the folder /wp-content/uploads/pay-with-a-tweet/ to 777
3. Create a new pay-with-a-tweet download.
4. Check if the downloads exists inside /wp-content/uploads/pay-with-a-tweet/
5. Try the download again!
ok will give this a try
Hola,
en mi caso me deja descargarlo una vez, pero a la siguiente me arroja un error 403. La dirección es
http://causticrolldave.com/discography/traveling-riverside-blues-2011/
Buenas,
Es un «error» conocido… no es tanto del plugin como algo de Twitter (aún lo estoy investigando). El error no está en la segunda descarga exactamente, sino en publicar desde fuera (desde una app) el mismo tweet dos veces seguidas, si escribes algo en tu cuenta de twitter ya funcionará bien… o si pasa determinado tiempo entre la misma publicación de tweet…
Thanks Rolando!
Hola Rolando, creo haber instalado y revisado siguiendo tus indicaciones, en mi caso da acceso pero no consigo descargarlo por que creo que no llega a publicar el twitt y me devuelve el siguiente error:
Error 403
403 Forbidden
Un saludo.
En principio el problema tiene que estar relacionado. Un error 403 es, en principio, o bien porque no das permiso a twitter para poder publicar o bien que tu app no puede realizar alguna de las tareas que el plugin necesita. ¿tienes una url dónde probar el proceso?
saludos
tried as per your video interactions and getting an error
Fatal error: Cannot redeclare class TwitterOAuth in /home/kismet4/public_html/wp-content/plugins/pay-with-a-tweet/lib/twitteroauth.php on line 15
Hello. You have another plugin using the TwitterOAuth. Pay with a Tweet v1.0.5 fix this issue
Hola Rolando, como es posible saber el numero de descargas de un fichero¿?
Gracias!!
Pues no contemplé esa posibilidad. Me lo apunto e intento sacar a lo largo de Junio una versión que almacene las descargas de cada «botón», tal y como está vía WP no podrías… igual desde GA utilizando la URL destino… de cualquier modo, la próxima versión contemplará lo que comentas
saludos!
I love your plugin, but i have a little request for a next release: i’m using a download manager to track some downloads, like this: http://www.skyflash.it/downloads/download-info/traduzione-di-morrowind-e-bloodmoon/ and i’d love to integrate it with Pay with a tweet.
But your plugin can «only» create tweet buttons with a file attached. I need buttons with a link, not the file. In this way i can create tweet buttons with the download manager links, so i can get advantage of both the solutions: a «tweet download» and the download manager counter & tracking system 🙂
It is possible?
Pingback: Plugins para WordPress que harán de tu blog una chulada - Diseño CreativoDiseño Creativo
Pingback: Plugins para WordPress que harán de tu blog una chulada | Diseño web
Helo,
Upload files problem..
http://i.hizliresim.com/voNdqm.png
Hi!
And the problem is…? I don’t see any problem
Pingback: Plugins para WordPress que harán de tu blog una chulada | Creación paginas web
Hola, primero darte las gracias por tu plugin.
Intento introducir los datos de mi web y la call back URL que me indica el plugin pero solo obtengo este mensaje de twitter «Error. Validation failed: Not a valid URL format»
No sé si tendrá que ver que tengo instalado wp en un subdominio…
Gracias de antemano…
Hola de nuevo, sigo peleándo con el plugin, mi problema es que cuando intento crear la aplicación en twitter no me reconoce como válida la call back URL que indicas, si dejo en blanco ese campo no me funciona la app. ¿Alguna solución?
Gracias de antemano…
ola removi o plugin do site,do banco mas esta em algum lugar do site
Hola, ¿Puedo modificar el archivo que resulta cuando el tweet se publica con exito con el fin de que quede con los estilos de mi sitio web? y si es así que archivo debo modificar
gracias
Es el archivo filter.php 🙂