Json, Wordpress y PHP (segunda parte)

Escrito el 7 de Abril del 2007 por artux.
Categoria: Desarrollo, Wordpress, Tutoriales, Programacion.

Nota importante: El archivo wp-json.php original mencionado en el post anterior, tiene un minúsculo error de syntaxis; en las parejas {”clave” : “valor”} {”key” : “value”} la definicion de las diferentes claves esta hecha sin comillas, lo cual puede provocar errores de lectura en algunas aplicaciones.

Para solucionar este pequeño inconveniente, edité el wp-json.php original agregándole las comillas faltantes, y además retoqué un poco el código para que la función callback pueda ser definida por el cliente. Pueden ver el archivo resultante en el siguiente enlace: wp-json.php (editado) o desde este otro Feed en Formato JSON para Wordpress.

Hecha la aclaración, paso a completar este post con la segunda parte que quedé debiendo :) .

Json, Wordpress y PHP (segunda parte)

3- PHP y JSON

Exiten parses de JSON para la mayoría de lenguajes de programación, y como no podría ser de otra forma también para PHP.

Sin embargo la forma en que llevaremos esto acabo va a depender de la versión de PHP que estemos utilizando y de las posibilidades que ofrezca nuestro servidor de hosting.

Explicando mejor esto.

En PHP desde la versión 5.2.0 viene incluida una extencion para codificar y decodificar JSON habilitada por defecto. Pero no todos los servidores de hosting funcionan con PHP 5, es mas, la gran mayoria solo lo hacen con PHP 4, en ese caso se puede utilizar la libreria de PEAR llamada Services_JSON.

Ejemplificando para que se entienda.

  • JSON con PHP 5:
    =========================================
    <?php
    
    //codificando un array en formato JSON
    
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
    
    echo json_encode($arr);
    
    ?>
    
    /*Nos devuelve lo siguente
    
    {"a":1,"b":2,"c":3,"d":4,"e":5}
    */
    =========================================
    
    =========================================
    <?php
    
    //decodificando JSON
    
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    
    var_dump(json_decode($json));
    var_dump(json_decode($json, true));
    
    ?>
    
    /*Nos devuelve lo siguente
    
    Sin parametro opcional devuelve un objeto
    
    object(stdClass)#1 (5) {
        ["a"] => int(1)
        ["b"] => int(2)
        ["c"] => int(3)
        ["d"] => int(4)
        ["e"] => int(5)
    }
    
    true como parametro opcional devuelve un array asociativo
    
    array(5) {
        ["a"] => int(1)
        ["b"] => int(2)
        ["c"] => int(3)
        ["d"] => int(4)
        ["e"] => int(5)
    }
    */
    =========================================
    

Se puede leer más sobre el método anterior en el sitio oficial de PHP.

  • JSON con PHP 4:
    solo necesitaremos descargar el archivo Services_JSON y hacer lo siguiente.

    =========================================
    
    // creando un nueva instancia del Services_JSON
    
    require_once('JSON.php');
    $json = new Services_JSON();
    
    // convirtiendo un array en formato JSON
    
    $value = ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5)
    $output = $json->encode($value);
    print($output);
    
    // decodificando JSON
    $input = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    $value = $json->decode($input);
    
    =========================================
    

Con esto creo que ya podemos empezar a trabajar con PHP y JSON. Tambien, si no queremos trabajar con la clase Services_JSON, existe la posibilidad de instalar la extencion json disponible en PECL; pero para ello tendremos que tener acceso al archivo php.ini y no todos los servidores de hosting lo permiten.

4- JSON, Wordpress y PHP

Para ir terminando, solo nos queda hacer interactuar estas tres tecnologias.

Por un lado ya tenemos el archivo wp-json.php, que nos genera un feed de nuestro blog en formato JSON; por otro lado en las líneas anteriores aprendimos a codificar y decodificar JSON con PHP. Lo que haremos entonces, sera un minilector en PHP del feed JSON, generado por el ya mencionado wp-json.php, que nos muestre el último post de nuestro blog.

Para el ejemplo voy a usar la clase Services_JSON.

=========================================

<?php

//incluyo el archivo que hara el trabajo de decodificacion
include (’json.php’);
$json = new Services_JSON();

//peticion del feed JSON
$site = file_get_contents(’http://www.tublogwordpress.com/wp-json.php’);

//decodificando la data recibida en formato JSON
$value = $json->decode($site);

//rescatando los valores mediante la funcion get_object_vars ()
$data = get_object_vars($value);
$show = get_object_vars($data[’entries’][’0′]);

//armando la salida a mostrar
$titulo = $show[’title’];
$link = $show[’id’];
$contenido = $show[’content’];

//formateando la salida
$content = “<div id=’json’>n”;
$content .= “<h2><a href=’” . $link . “‘>” . $titulo . “</a></h2>n”;
$content .= $contenido;
$content .= “</div>”;

//mostrando el resultado
echo $content;

?>

=========================================

Pueden ver un ejemplo funcionando que muestra el último post de anieto2k.com desde aquí. Es un poquito más completo y además cachea el contenido cada una hora para evitar sobrecargas.

Tambien pueden ojear el código de dicho ejemplo desde aquí.

Por ahora esto es todo, espero que les sirva para algo. Estoy un poco cansado y hambriento asi que me despido con un gran saludo!. Ante cualquier duda o sugerencia pueden dejar un comentario.

Saludos!!

6 comments.

Json, Wordpress y PHP (primera parte)

Escrito el 3 de Abril del 2007 por artux.
Categoria: Desarrollo, Wordpress, Tecnología, Programacion.

Sin dudas todos conocen que es Wordpress, y no creo que exista alguien que no sepa que es PHP; pero si son muchos los que todavia no conocen o no estan familiarizados con JSON (acrónimo de “JavaScript Object Notation”).

En el siguiente post, que por cuestiones de longitud :P estara dividido en dos partes, voy a tratar de explicar, en una forma medianamente breve, como hacer interactuar estas tres tecnologias.

Sumario:

  • Primera Parte:

    1. ¿Que es JSON?
    2. Wordpress y JSON
  • Segunda Parte:
    1. PHP y JSON
    2. JSON, Wordpress y PHP

1- ¿Que es JSON?

JSON es un subconjunto de la notación literal de objetos de Javascript pero no requiere el uso de Javascript”anieto2k

JSON es hoy en día un formato de intercambio de datos comparable con el formato XML, y para algunos superior a este último.

Si bien JSON en un principio fue pensado como una forma más sintética de programar javascript, ya que este metodo combierte la programacion de codigo en algo más literal (ver ejemplo*), facil de leer y escribir para las personas y facil de interpretar y generar por las maquinas, la simplicidad que ofrece a la hora de transportar y evaluar datos lo combierte en un formato de intercambio rapido y facil de implementar, llegando a ser elegido sobre el XML, por muchos (Goolge, Yahoo, etc.) para algunas de sus aplicaciones.

JSON está constituído por dos estructuras:

  • Una colección de pares de nombre/valor. En varios lenguajes esto es conocido como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un arreglo asociativo.
  • Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como arreglos, vectores, listas o sequencias.json.org

ejemplo*:

Definicion Tradicional de un Objeto en Javascript:

var obj = new Object();
obj.nombre = "Juan";
obj.getNombre = function(){
return this.nombre;
}

Difinicion con Json:


var obj = {
nombre: "Juan",
getNombre: function(){
return this.nombre;
}
}

2- Wordpress y JSON

Wordpress ofrece varios formatos de salida en XML para la sindicacion, como son RSS y ATOM, pero por defecto no trae incluida ninguna funcion que posibilite la salida del contenido en formato JSON. Aunque esto, en si, no es un problema ni un defecto de Wordpress si es algo que tiene solucion, ademas la posibilidad de ofrecer el contenido en un formato mas, en este caso JSON, nunca biene mal.

Hace ya unos cuantos días atras anieto2k posteo sobre uno de sus hallazgos a los que nos tiene acostumbrados, nadie sabe como hace para encontrar esas cosas, pero el hecho es que el hallazgo de anieto no es otra cosa que wp-json.php wp-json.php (corregido), un archivo que con solo colocar en el directorio raiz de nuestro blog posibilita la sindicacion de contenidos en formato JSON.

Se puede ver su salidad, con cualquier aplicacion que interprete este tipo de formato (JSON), apuntando a la siguiente url:
http://www.artux.com.ar/wp-json.php

Como bien nos cuenta anieto en su post, las posibilidades son las mismas que en el feed XML:

  • Para Busquedas:

    Para buscar dentro del blog todas las entradas que contengan la palabra wordpress, solo bastaría con hacer algo así:

    http://www.artux.com.ar/wp-json.php?s=wordpress

  • Para las Categorías:

    Para mostrar las últimas 10 entradas de una categoría en particular, deberemos conocer el ID de la categoría y hacer algo asi:

    http://www.artux.com.ar/wp-json.php?cat=10

  • Para un Post determinado:

    Para mostrar un post en particular, deberemos conocer el ID del post y hacer algo asi:

    http://www.artux.com.ar/wp-json.php?p=37

Y alguna que otra más.

Con esto, llegamos al fin de esta primera parte, ya tenemos una minuscula idea de que es JSON y como integrarlo en Wordpress. En la segunda parte veremos las diferentes opciones para trabajar con JSON y PHP, y como leer con PHP el archivo wp-json.php, servido por nuestro Wordpress.

Enlaces:

  • json.org (Sitio oficial de JSON - en ingles)
  • JSON (Entrada en la Wikipedia)
  • JSON-Syndication (Lista de correo wp-hackers donde se encuentra el archivo wp-json.php)

Saludos!

2 comments.

Cheat Sheets para Trabajar con Wordpress

Escrito el 16 de Marzo del 2007 por artux.
Categoria: Personales, Wordpress, Programacion, Recursos.

Esta es mi lista personal, y por ello un tanto arbitraria, de Cheat Sheets (Chuletas para Algunos) que considero de gran utilidad y ayuda a la hora de trabajar con Wordpress.

Básicos:

WordPress Cheat Sheets:

Dejo a continuacion un par de sitios donde podran encontrar muchos, pero muchos más Cheat Sheets para asi poder armar su propia lista.

Varias recopilaciones de Cheat Sheets:

  1. ilovejackdaniels.com (sitio del creador de muchos de los cheat sheets que andan dando vueltas por la web)
  2. techcheatsheets.com (más de 90 cheat sheets organizados por tags)
  3. The Developer Cheat Sheet Compilation (un poco mas de 80)

Saludos!

1 comment.

Who Link Here 0.2 actualizado - Wordpress Plugin

Escrito el 15 de Marzo del 2007 por artux.
Categoria: Desarrollo, Wordpress, WP-Plugins, Programacion.

“Una mejor forma de hacer el BlogRoll, pagando con la misma moneda a quienes nos enlazan”

Hace unas semanas publique Who Link Here v 0.1 (WLH), un plugin para Wordpress que muestra los últimos enlaces entrantes via Technorati. En ese momento prometí hacer una versión que en vez de utilizar la clase SimplePie, utilice las funciones internas de Wordpress para parsear los RSS.

Lo prometido es deuda. Hoy me pude tomar un tiempito libre, y tocando un poco la versión anterior de WLH pude hacer esta segunda versión (Who Link Here 0.2), que ademas de mejorar el tiempo de carga, ofrece la opción de poder elegir entre mostrar los enlaces entrantes via Technorati o via Google Blog Search.

Como Instalar Who Link Here v.0.2

1. Descargar el plugin desde el enlace de descarga al final de este post.
2. Descomprimirlo y subir el directorio /who_link_here completo dentro del directorio de los plugins: /wp-content/plugins/
3. Vamos a la sección Plugins del panel de control de Wordpress y activamos “Who Link Here” y listo, ahora solo resta integrarlo en nuestro Theme.

Como Integrar Who Link Here v.02 en nuestro Template

Antes que nada, hay tres formas posibles de usar WHL v.0.2, Mostrando solo los enlaces entrantes via Technorati; Mostrando los enlaces entrantes pero usando Google Blog Search o, la tercera, Mostrando los enlaces entrantes de las dos formas anteriores juntas.

1. Mostrando los Enlaces Entrantes via Technorati:

  • Para mostrar los enlaces via Technorati lo único que tenemos que hacer es agregar la función siguiente donde queremos que aparezcan los enlaces:
    <?php tech_links("num.enlaces") ?>
  • El primer parámetro num. enlaces es la cantidad de enlaces que queremos mostrar; por defecto y como maximo 10.

2. Mostrando los Enlaces Entrantes usando Google Blog Search:

  • Si solo queremos mostrar los enlaces entrantes indexados en Google Blog Search, tenemos que agregar la siguiente función donde queremos que aparezcan:
    <?php gbs_links("num.enlaces") ?>
  • El parámetro num.enlaces, es la cantidad de enlaces que queremos mostrar, teniendo 20 como máximo.
  • A diferencia de Technorati, Google Blog Search no excluye los enlaces del mismo host consultado, por lo tanto hice un pequeño filtro para que la función solo muestre los enlaces entrantes de sitios distintos al host consultado, lo que puede llegar a alterar el numero de enlaces a mostrar. La solución, incrementar el numero de enlaces a mostrar hasta que quede como queremos.

3. Mostrando los enlaces entrantes usando Technorati y Google Blog Search.

  • Dado que son dos funciones distintas, el uso de una no excluye a la otra, por eso, si queremos mostrar los enlaces entrantes usando los dos medios disponibles (Technorati, Google BS), solo basta con agregar las dos funciones, con sus correspondientes parámetros, en el o los lugares que queremos que se muestren.
Download Image Download: Who Link Here v 0.2 Downloads: 1538 times

Actualización 27/09

Nueva Versión 2.0 de Who Link Here con soporte para Widgets

31 comments.

Prototype el Framework JavaScript por excelencia al fin en Version Comprimida

Escrito el 10 de Marzo del 2007 por artux.
Categoria: Personales, Desarrollo, Tecnología, Programacion.

prototype

Sin ningún lugar a dudas, todos sabemos que Prototype es el Framework JavaScript por excelencia, pero sin embargo son muchos los desarrolladores que a la hora de elegir un framework javascript, optan por uno de menor tamaño (e.j: jQuery; MooTools) para asi ahorrarse unos cuantos kbs en la carga de sus aplicaciones y/o sitios web.

Pues bien, para todos aquellos que en su momento pensaron en usar Prototype, pero sus casi 70kb los hicieron desistir, les tengo buenas noticias.

Parece ser que un auto denominado evangelizador de Prototype, John David Dalton, no tubo mejor idea que comprimirlo en todas sus versiones (1.4, 1.5rc0, 1.5rc1, 1.5 final); dejando el tamaño de la versión 1.5 final de Prototype en alrededor de los 19kbs lo cual representa aproximadamente 25% de la versión sin comprimir.

dice John David Dalton:

“…se que la mayoría de desarrolladores que actualmente usan Prototype, no reparan en su tamaño. Sin embargo he notado que muchos de los nuevos desarrolladores no le dan la importancia que merece, porque leen que es ‘pesado’ y ‘lento’. Esos desarrolladores entonces eligen otro framework y no le vuelven a dar a Prototype un segundo vistazo…”

y sigue John :

“Hice esta colección Comprimida de Prototype para ayudar a evangelizar sobre este Framework”

Por mi parte, estuve probando un poco la version 1.5 comprimida y la verdad que anda tan bien o mejor que la original sin comprimir. Es mas, la pude implementar en un par de aplicaciones con solo reemplazar la original por la versión comprimida sin tener que modificar nada.

Enlaces:

P.d.: casi seguro que mañana la integro en mi Theme de Wordpress BlueContent.

nota: traducción apresurada ;) ;

4 comments.

Share This (plugin) con Marcadores Sociales de habla Hispana

Escrito el 25 de Diciembre del 2006 por artux.
Categoria: Desarrollo, Wordpress, WP-Plugins, Programacion.

Hace poco leyendo el blog de un tocayo (anieto2k) me entero que Alex King proponia el uso de un Icono Social Único, una propuesta para unificar el concepto de compartir contenidos sin tener que confundir a los usuarios con las interminables listas de iconos de los diferentes servicios sociales.

peers

La magnifica idea viene de la mano con un exelente plugin para wordpress, pero el unico incombeniente es que por defecto solo viene con marcadores sociales que no son en castellano (ej.: del.icio.us). Por defecto no trae ni a meneame, ni a fresqui, ni a enchilame, etc. Asi que en mi gran domingo de aburrimiento me tome la libertad de modificarlo para agregar algunos marcadores sociales de los nuestros.

Quedo algo así:

share_this

Para los interezados en usar el plugin modificado aca dejo el enlace:

(actualizacion 28/03/2007: <meta name=”robots” content=”noindex, noarchive” /> y nofollow en el enlace Compártelo, para evitar así el contenido duplicado.)
(actualizacion1: agregue BlogMemes y Blinklist en español para los que me lo pidieron por mail).
(actualizacion 2: resuelto el problema de la codificacion).
(actualizacion3: Actualice el plugin a la version 1.4)
(actualizacion4: Agregados Chido y Webeame)

Enlaces:

Como cambiar la ubicación de Compártelo (Share This). (blog tikitak-o-rama)

descargar version traducida al gallego: Compárteo - Andrés Milleiro

adaptación para Blogger de Share This: El Blog de Loretahur

blog sigt.net (breve explicacion de como agregar mas marcadores).
blog Mike Chapel’s Blog (exelente explicacion sobre que son y para que sirven los Marcadores Sociales).

Nota: las instrucciones de como instalarlo estan dentro del .zip .

Saludos y espero que les sea de alguna utilidad.

Entradas Relacionadas:
-BlueContent Versión 1.0 Liberado (Wordpress Theme).
-Get Linux, Plugin de Wordpress para difundir GNU/Linux.

94 comments.