Ejemplos de código para WP

Yo soy de la opinión, quizás no muy compartida, de que el código de WordPress es una mie…. Siempre que quiero hacer algo en una plantilla o un plugin me desespero, por eso, a la gente que le pase como a mí, estos casos de ejemplos de código le puede venir muy bien:

Asignar una imagen al ID de un post

Esto puede parecer raro, pero si quieres que cada post pueda tener una imagen asociada, este truco explica cómo hacerlo.

$image = "$id.gif";
if(is_readable("./images/$image")) {
echo 'alt tag';
} else {
echo 'alt tag';
}

Separar los trackbacks de los comentarios

Para ello hay que modificar la plantilla de comentarios y duplicar la estructura de los comentarios, añadiendo justo despues del foreach de los comentarios:

<?php foreach ($comments as $comment) : ?>

lo siguiente:

$comment_type = get_comment_type();
if($comment_type == ‘comment’) {

Mostrar el nombre de la categoría

Muestra el nombre de la categoría allí donde la mostremos.

$cat = get_the_category(); $cat = $cat[0]; echo $cat->cat_name;

Posts más recientes

Una lista con los tres posts más recientes:

get_archives(’postbypost’, 3);

5 WordPress PHP Code Snippets

|

Spellify: corrector ortográfico en tus formularios

Spellify es un corrector ortográfico en tiempo de ejecución para las cajas de texto de nuestros formularios. Este script evalua las palabras introducidas y muestra las palabras erróneas y cuales son las posibles correctas.
spellify.png
Para su uso es necesario PHP 4+ y CURL y script.aculo.us 1.8.0, y añadir en nuestras páginas código HTML y los estilos y javascripts. Esto último no me parece muy elegante, ya que este código se podría crear mediante el js.
Spellify está disponible en varios idiomas ya que usa el corrector ortográfico de Google.
De todas formas, si queréis haceros vuestro propio corrector ortográfico en PHP, podéis usar la función levenshtein, la cual calcula la distancia entre dos palabras. Eso sí, esta función es costosa en rendimiento.
Spellify
Vía / WebAppers

Usar Zend Framework con Code Igniter

Si nos encontramos con la necesidad de usar Zend Framework con Code Igniter, podemos encontrarnos problemas a la hora de juntar ambos frameworks. El problema se encuentra en que Code Igniter separa el código en diferentes directorios para el core y la aplicación.
El truco es crear un helper (funciones que realizan pequeñas tareas) y la funcionalidad de autoload de Code Igniter. El helper que se crea el autor solo añade un directorio en el include_path, y el directorio que añadirá será el del Zend Framework.
Despues en el autoload del Code Igniter se le añade se que cargue automáticamente el helper que nos hemos creado.
Using the Zend Framework with Code Igniter (an alternative)

Procedimientos almacenados de lenguajes externos para MySQL6

External Language Stored Procedures for MySQL es un parche para MySQL 6 que nos permite ejecutar procedimientos almacenados creados en otro lenguaje de programación externo a MySQL.

Los procedimientos almacenados se declaran en SQL usando sintaxis estándar de compilación, mientras que los que se implementan en otros lenguajes de programación se implementan como plugins que se instalan en el servidor en tiempo de ejecución.

Actualmente admite los plugins para Java y Perl, además de dar soporte a peticiones XML-RPC como procedimientos almacenados.

Un ejemplo para Perl sería el siguiente:

sub test1() {
my $dsn= "DBI:mysql:test";
my $dbh= DBI->connect($dsn, undef, undef) or
die "Error al conectar";
$dbh->do("INSERT INTO t1 (txt) VALUES ('hello world')");
return 0;
}

Y se usaría de la siguiente manera:

mysql> CREATE TABLE test.t1 (
seq INT NOT NULL AUTO INCREMENT PRIMARY KEY,
txt VARCHAR(128));
mysql> CREATE PROCEDURE test.test1()
LANGUAGE Perl MODIFIES SQL DATA
EXTERNAL NAME 'MyDBIExample::test1';
mysql> LOCK TABLE test.t1 WRITE;
mysql> CALL test.test1();
mysql> UNLOCK TABLES;
mysql> SELECT * FROM test.t1;

External Language Stored Procedures for MySQL

Thrudb: servicios de BD orientados documentos

Thudb es un conjunto de servicios construidos sobre el framework Thrift de Facebook que provee servicios de indexación y almacenamiento de documentos para realizar y escalar sitios web. El propósito es ofrecer a los desarrolladores web servicios flexibles, rápidos y fáciles de usar que pueden mejorar y reemplazar los sistemas tradicionales de almacenamiento y las capas de acceso.
Entre sus características nos encontramos con la disponibilidad de clientes para la mayoría de los lenguajes, replicación de múltiples master, backups incrementales, multiples backends de almacenamiento (S3 incluido), escalabilidad y API de búsqueda (Lucene).
Los servicios disponibles incluye el almacenamiento de documentos, indexación y búsqueda, cola de mensajes, particionamiento y balanceo de carga.
Thrudb

Utilidad online para medir la carga de una página

A la hora de realizar una página es importante tener en cuenta el tiempo de carga de una página. Existen aplicaciones muy buenas como jmeter con las que podemos hacer tests de estrés para saber los tiempos de carga de las páginas, pero en algunas ocasiones algo sencillo es lo mejor y lo más cómodo.
El Full Page Test de Pingdom nos ofrece el tiempo de carga del HTML, imágenes, CSS, JavaScripts, RSS, Flash y frames/iframes. A parte nos muestra el momento de inicio de petición, el tiempo hasta el primer bit (TTFB) y el tiempo hasta el último bit (TTLB. Todo esto en una gráfica muy sencilla y aclaratoria.
fulltest.png
Full page test
Vía / OpenSourceCommunity.org

Librería para que MySQL devuelva XML

Ya hace tiempo comentamos como hacer para que MySQL devolviera los datos en formato XML mediante procedimientos almacenados. En este caso se trata de la librería lib_mysqludf_xql que permite mediante un conjunto de funciones mostrar la salida de las consultas en formato XML, sin necesidad de utilizar lenguajes de programación tipo PHP o Ruby.

Esta librería usa xmlwriter de libxml2, la cual es una librería muy rápida sin caché, además escapa directamente las entidades XML y trata de forma muy eficiente la memoria cuando el contenido crece.

Un ejemplo de uso sería el siguiente:

SELECT xql_agg('classes' AS `xql:root`,
xql_element('class', null, concat(grade, suffix) AS name, teacher))
FROM schoolclass;

Y el resultado sería el siguiente:

<classes>
<class name="1A" teacher="Pullen"/>
<class name="2A" teacher="Berg"/>
<class name="3A" teacher="Heijden"/>
<class name="3B" teacher="Ven"/>
<class name="4A" teacher="Theunissen"/>
<class name="4B" teacher="Huizingh"/>
<class name="4C" teacher="Groot"/>
<class name="5A" teacher="Brongers"/>
<class name="5B" teacher="Zijlstra"/>
<class name="6A" teacher="Brommer"/>
<class name="7A" teacher="Nimwegen"/>
<class name="7B" teacher="Lede"/>
<class name="8A" teacher="Spaansen"/>
<class name="8B" teacher="Wiersma"/>
</classes>

lib_mysqludf_xql

links for 2007-12-29