Esta entrada forma parte del conjunto Optimizar WordPress reduciendo consumo de memoria, peticiones y consultas a MySQL.
Para llevar a cabo esto primero debemos saber que es lo que necesitamos y que es lo que no necesitamos.
Si es posible, en lugar de utilizar muchos Campos personalizados (Post Meta) hay que utilizar solo uno pero con muchos datos.
Nivel: Avanzado.
WordPress tiene la capacidad de guardar arrays (matrices o conjuntos de datos) de datos en un solo campo personalizado:
Para generar los datos (functions.php o en donde tengamos nuestro Meta Box):

// Es importante el uso de true en le ultimo parámetro.
// Este código se podría colocar en el lugar donde necesitamos mostrar los datos.
$primer_dato = 'Contenido del primer dato personalizado dentro de un array.';
$imagen = 'http://www.example.com/wp-content/images/imagen.png';
$meta_value = array(
    'primer_dato' => $primer_dato,
    'imagen' => $imagen
);
update_post_meta($post_id, 'datos_array', $meta_value);

// Esto nos devolverá un solo dato.
echo $meta_values['primer_dato'];

Para obtener los datos:

// Es importante el uso de true en le ultimo parámetro.
// Este codigo se podria colocar en el lugar donde necesitamos mostrar los datos.
$meta_values = get_post_meta($post_id, 'datos_array', true);

// Esto nos devolverá un solo dato.
echo $meta_values['primer_dato'];

Nivel: Avanzado, Experimental.
Otra forma de reducir una petición es colocar el siguiente código en nuestro functions.php:

function my_posts_request_filter( $input = false ) {
	return $input;
}
add_filter( 'posts_request', 'my_posts_request_filter' );

Nota: Es importante realizarlo con precaución y teniendo en cuenta que no se puede utilizar el filtrado de posts por medio de la función query_posts(), de lo contrario no funcionara y solo obtendrán un error SQL, y en su lugar usar la clase WP_Query.
Nivel: Medio.
Algo que también es muy importante realizar, es cuando tenemos peticiones MySQL personalizadas.
Esto funciona guardando el contenido de una petición dentro de una variable, de tal forma que al mostrar le contenido de la misma variable varias veces, no se ejecutaran peticiones innecesarias como se realizarían si llamáramos directamente a la función cada vez que queremos obtener el mismo dato.

// El codigo no importa. Es solo un ejemplo.
$id = 350;
function funcion($id) {
$sql = 'SELECT * FROM wp_posts WHERE ID = $id';

return conectar($sql);
}
echo funcion($id);
// Si se hace de esta forma, cada que obtengamos el dato se realizara una petición nueva a la base de datos.

Optimizado con variables:

// El codigo no importa. Es solo un ejemplo.
$id = 350;
function funcion($id) {
$sql = 'SELECT * FROM wp_posts WHERE ID = $id';

return conectar($sql);
}
$post = funcion($id);

echo $post;
// Si se hace de esta forma, cada que obtengamos el dato se mostrara el contenido de la variable $post que previamente se estableció.

Nivel: Avanzado.
Otra forma distinta y muy util es utilizando los Transients de WordPress.
Los Transients son datos que se guardan en la tabla de WordPress donde se genera una petición para cargar todas las opciones de WordPress, y lo que se puede cachear en ese lugar son por ejemplo los widgets y elementos que solo se muestran en la pagina principal y no lo recomiendo en los posts individuales porque al momento de tener muchos posts: WordPress cada que inicia revisa todos los datos de esta tabla y estaría consumiendo mucha memoria y consultando datos que no se necesitan.
El código necesario para mostrar un post aleatorio mas el sistema de Cache propio de WordPress mediante Transients:

if ( false === ( $post_aleatorio = get_transient( 'post_aleatorio' ) ) ) {
	$query_post_aleatorio = new WP_Query(array('orderby' => 'rand', 'posts_per_page' => 1));
			while ($query_post_aleatorio->have_posts()) : $query_post_aleatorio->the_post();
				$post_id_post_aleatorio = $post->ID;
				$titulo_ = get_the_title();
				$enlace_ = get_permalink();
				$imagen_ = data( 'servidor_imagenes', $post_id_post_aleatorio, true ); // Esta funcion es propia (No utilizarla).

				$post_aleatorio = <<<EOT
<a class="aleatorio" title="$titulo_" href="$enlace_" rel="bookmark"><img alt="$titulo_" src="$imagen_" /><strong>$titulo_</strong></a>
EOT;
			endwhile;
		set_transient( 'post_aleatorio', $post_aleatorio );
	}

	echo $post_aleatorio;
	unset($post_aleatorio);

Nota: Cuando se borra un Transient con las siguientes funciones, el Transient se vuelve a generar en la primer petición recibida.
Para borrar los Transients cada que se publica un nuevo post o cada que se actualiza uno existente:

	function delete_publish_post_transients() {
		delete_transient( 'post_aleatorio' );
	}
	add_action(	'publish_post',		'delete_publish_post_transients'	);

Nota: set_transient() acepta tres parámetros, de los cuales el tercero es para especificar una caducidad establecida en segundos, la cual no recomiendo utilizar porque el simple hecho de utilizarla le quita la opción para que cargue automáticamente junto con las demas opciones de WordPress y se crearía una petición extra a la base de datos y esto no es lo que estamos buscando aunque nos podría ser útil en otros casos.
Para borrar el Transient cada cierto tiempo (En el ejemplo cada hora):

add_action('hourly_delete_transients', 'delete_post_aleatorio');

	function tarea_eliminar_post_aleatorio() {
		if ( !wp_next_scheduled( 'hourly_delete_transients' ) ) {
			wp_schedule_event(time(), 'hourly', 'hourly_delete_transients');
		}
	}
	add_action('wp', 'tarea_eliminar_post_aleatorio');

	function delete_post_aleatorio() {
		delete_transient( 'post_aleatorio' );
	}
Tagged with:  

WordPress cuenta con un gran núcleo que nos permite adaptarlo a nuestras necesidades sin necesidad de editarlo y cada día va en camino a convertirse en un verdadero CMS (Gestor de Contenidos). La mayoría de los Themes de WordPress vienen con un pequeño extracto de cada articulo en la pagina principal, pero en ningún lado nos muestra como cambiar el numero de palabras que se muestra, en cambio WordPress si cuenta con esa capacidad y solo es cuestión de explotarla a nuestro antojo.

Para establecer el numero de palabras del extracto o resumen tenemos que buscar el archivo functions.php de nuestro Theme de WordPress y luego lo editamos y en el final del archivo (respetando el cierre de PHP “?>”) añadimos el siguiente código:


function custom_excerpt_length( $length ) {
	return 55; // Este es el numero de palabras que se muestra en el extracto.
}
add_filter( 'excerpt_length', 'custom_excerpt_length' );

Por defecto WordPress establece el numero de palabras en 55 y podemos colocar cualquier numero mientras sea un numero entero.
Ahora si lo que queremos es que nuestro Theme muestre un extracto o resumen en la pagina principal tenemos que buscar en el index.php la función:

the_content();

Y reemplazarla con esta otra:

the_excerpt();

Y después de guardar los cambios nuestro sitio empezara a mostrar los extractos.

Para cualquier duda o pregunta dejen un comentario.

Tagged with:  

WordPress 3.3 alias “Sonny” a plena luz

On 12/12/2011, in Internet, WordPress, by Administrador

WordPress la plataforma de publicación web mas usada en la actualidad ha estado en desarrollo y ahora le toca tomar parte a la version 3.3 “Sonny” que hace unas horas fue lanzada. WordPress 3.3 fue lanzada el mismo dia que la versión candidata 3 y parece ser que esta version mejoro muchos aspectos de suma importancia. Así que a actualizar se ha dicho.

Mas información en WordPress.org.

Tagged with:  

WordPress 3.3 Release Candidate 1WordPress 3.3 Release Candidate 1 esta disponible apenas hace unas horas después de 4 versiones beta. WordPress, la plataforma mas usada en Internet para la gestión de contenido y para la creación de sitios web ha cumplido con lo que prometió, como por ejemplo: muchos se quejaban por el cargador de medios y hasta este punto parece que esta versión RC ya lo soluciono así como los usuarios lo esperaban. Otro punto importante es que WordPress al utilizar la estructura example.com/%post%/ utilizaba muchas redirecciones de manera que entorpecía un poco el rendimiento y el consumo de recursos y lo que yo verdaderamente estuve esperando se cumplió,: esta vez se enfocaron un poco en el rendimiento y lo han optimizado bastante, hace unos dias realice unas pruebas en localhost y de 450ms se restaban unos 180ms, por lo que la diferencia de velocidad era notable y además de que el panel cambio un poco y ahora tiene un mensaje de bienvenida y el panel también es compatible con mas dispositivos, siendo que se adapta según el cliente.

Tagged with:  

WordPress cuenta con una magnifica interface que permite ser amigo de los buscadores automáticamente pero no es tan eficáz sin un plugin SEO dedicado 100% a realizar esa importante tarea. Existen distintos plugins WordPress para optimizar nuestro blog en buscadores como la herramienta tan conocida All in One SEO Pack que viene a ser un clásico, pero ahora hablaremos de algo superior.

Su nombre es wpSEO, un plugin simple y más adaptado al sistema de WordPress que permite sacar el máximo partido al momento de hacer la optimización, cuenta con más de 70 opciones para configurar y crear una dinámica dependiendo de las necesidades de nuestro blog. El único detalle negativo es que cuesta 24 dólares, pero lo puedes probar por 10 días descargando su demo en la página oficial de wpSEO.

Vía | BlogPerfume

Tagged with: