WP sin borradores

Jueves, 26 de agosto de 2010

Añadiendo esta linea al final del wp-config.php
define('WP_POST_REVISIONS', false);

Desactivas la creación de revisiones de tus apuntes en tu WordPress, es decir, no se genera un nuevo registro cada 5 minutos de edición ó cada vez que pulsas “Guardar borrador” y que había llevado mi tabla de apuntes a pesar 26Mg.. cuando una vez limpia de revisiones pesa 5Mg.

Quitar avisos de actualización en WordPress

Martes, 24 de agosto de 2010

La tipica chorrada que te pone nervioso: entras al panel de WordPress y venga cartelitos de “Nueva version de ..” , “Actualiza ahora“, “Atención…” … y eso que tengo cuatro plugins instalados, pero es que como cada vez más soy del club de “Si-funciona-para-que-lo-quieres-actualizar-?“, pues me he dedicido a hacer desaparecer dichos mensajitos, y para hacerlo lo mas sencillo es editar el archivo PHP del plugins en cuestión y en las primera lineas, donde pone:
/*
...
Version: 1.2.1 <-- antes
Version: 100.2.1 <-- ahora
Author: Michael Zehrer
Author URI: http://zepan.org
*/

Ale, avisame cuando llegues a la version 100.2.2

Mousewheel

Domingo, 18 de julio de 2010

Acabo de incorporar al javascript del Cuaderno de campo la extensión para jQuery que añade funcionalidades para manejo de eventos de mousewheel. Vamos que ahora es posible detectar y dar uso a la rueda del ratón en el blog.
Iré extendiendolo por el blog allí donde se me ocurre que puede tener algún sentido o facilitar algo, como por ejemplo en el banner de “En twitter” que se puede ver a la derecha, en la página principal del blog. Ahora, con la rueda del ratón podeis rotar entre los posts publicados en Twitter.

Ampliando a 640 pixels

Jueves, 1 de julio de 2010

Unos pequeños ajustes en Cuaderno de campo: ahora el ancho de la columna principal pasa de 910 pixel a 970 pixels, quedando la zona de apuntes del blog en 690px. Así nos preparamos para hacer uso del nuevo tamaño de imagen (640px) que desde la semana pasada a incorporado Flickr a su servicio y que no creo que tarde en convertirse en el standart (los 500 px ya se quedaban algo pequeños y desfasados).

El negro de Cuaderno de Campo

Martes, 29 de junio de 2010

En fase beta todavía.
He implementado una sencilla versión de Cuaderno de campo en negro, tambien llamada hoja de estilos alternativa. Podeis probarla cliqueando en CSS Blanco ó CSS Negro que aparece en la barra lateral, sección “Del sitio” (sutil a la par que geek homenaje a Kusturica).

Es muy sencillo, básicamente via Javascript+JQuery se cambia la cabecera de la página donde se especifica la hoja de estilo en uso, y se guarda la información en una cookie. Al cargar la página PHP comprueba si existe esta cookie y aplica un estilo u otro.

Ni que decir tiene, es necesario tener las cookies activas para que a vuestra siguiente visita el último estilo seleccionado prevalezca.

Cuaderno de campo en Twitter

Lunes, 21 de junio de 2010

Ayer instalé el plugin Tweetly Updater con algunas modificaciones que comento más abajo, con lo cual, desde hoy aquellos que usen Twitter (no es mi caso) pueden estar al tanto de los nuevos apuntes que aparezcan por aqui. La cuenta es twitter.com/Trebol_a

Modificaciones aTweetly Updater

He optado por Tweetly updater plugin para wordpress por su simplicidad, sin más parafernalia que acortar URL y enviar a Twitter. A pesar de eso le he realizado algunas modificaciones para adaptarlo al caso particular de Cuaderno de campo. Estas son algunas de las modifcaciones que he hecho en el plugins.

Innutilizar acortador de url bit.ly

WordPress ya dispone de sistema de su propio acortador de url y además lo estoy usando bastante (ver enlaces a Facebook, Twitter y demás), me resultaba absurdo darme de alta y usar un servicio que no necesito. sigue …

Adaptar funciones de paginación de WP

Viernes, 4 de junio de 2010

Un par de modificaciones simples a las funciones de WordPress que imprimen el paginador (ver al pie de la página principal, donde aparece “Apuntes más antiguos”, ahora aparece un numerito de fondo) para que incluyan el número de página a la que apunta el enlace. Me pareció mas cómodo, intuitivo, etc., etc…
Solo hay que tocar dos funciones (get_previous_posts_link y get_next_posts_link) para incluir una etiqueta nueva conteniendo el número y a continuación via CSS se formatea para que quede bonito, y todo sin gastar ni un kb en bitmaps.

Así es como se ha quedado la función get_next_posts_link en /raiz_wp/wp_includes/link_template.php
function get_next_posts_link( $label = 'Next Page »', $max_page = 0 ) {
global $paged, $wp_query;

if ( !$max_page ) {
$max_page = $wp_query->max_num_pages;
}

if ( !$paged )
$paged = 1;

$nextpage = intval($paged) + 1;

if ( !is_single() && ( empty($paged) || $nextpage <= $max_page) ) {
$attr = apply_filters( 'next_posts_link_attributes', '' );
return '". preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .''.$nextpage.'';
}
}

Así es como se ha quedado la función get_previous_posts_link en /raiz_wp/wp_includes/link_template.php
function get_previous_posts_link( $label = '« Previous Page' ) {
global $paged;
if ( !is_single() && $paged > 1 ) {
$paginaanterior = intval($paged) - 1;
$attr = apply_filters( 'previous_posts_link_attributes', '' );
return ''.$paginaanterior.'". preg_replace( '/&([^#])(?![a-z]{1,8};)/', '&$1', $label ) .'';
}
}

y en el CSS algo como
.paginador .numeroPaginaFondo { font-weight:bold; display:inline; position:absolute; top:-55px; font-size:102px; color:#eed;z-index:-1;}
.paginador .numeroPaginaFondo#numeroAnterior {right:0px;}
.paginador .numeroPaginaFondo#numeroSiguiente {left:0px;}

Creo que queda más bonico del tó que unicamente el enlace del texto.

Modificar la funcion get_calendar de WP

Miércoles, 2 de junio de 2010

He modificado la función get_calendar de este WordPress 2.9.0 ubicada en /raiz_wp/wp_includes/general_template.php para reemplazar el titulo del més por una lista de mes-año (numero de apuntes).
Creo que con esto se mejora bastante la navegación por los apuntes antiguos y aunque me suena de algún plugins que hace algo parecido vereis que se pueden ahorrar algunos recursos simplemente añadiendo unas líneas a la función.
La función get_calendar ha quedado de la siguiente manera (la parte corregida/modificada está advertida, el resto de la función es la original … creo… :) )
function get_calendar($initial = true) {
global $wpdb, $m, $monthnum, $year, $wp_locale, $posts;

$cache = array();
$key = md5( $m . $monthnum . $year );
if ( $cache = wp_cache_get( 'get_calendar', 'calendar' ) ) {
if ( is_array($cache) && isset( $cache[ $key ] ) ) {
echo $cache[ $key ];
return;
}
}

if ( !is_array($cache) )
$cache = array();

// Quick check. If we have no posts at all, abort!
if ( !$posts ) {
$gotsome = $wpdb->get_var("SELECT 1 as test FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1");
if ( !$gotsome ) {
$cache[ $key ] = '';
wp_cache_set( 'get_calendar', $cache, 'calendar' );
return;
}
}

ob_start();
if ( isset($_GET['w']) )
$w = ''.intval($_GET['w']);

// week_begins = 0 stands for Sunday
$week_begins = intval(get_option('start_of_week'));

// Let's figure out when we are
if ( !empty($monthnum) && !empty($year) ) {
$thismonth = ''.zeroise(intval($monthnum), 2);
$thisyear = ''.intval($year);
} elseif ( !empty($w) ) {
// We need to get the month from MySQL
$thisyear = ''.intval(substr($m, 0, 4));
$d = (($w - 1) * 7) + 6; //it seems MySQL's weeks disagree with PHP's
$thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('${thisyear}0101', INTERVAL $d DAY) ), '%m')");
} elseif ( !empty($m) ) {
$thisyear = ''.intval(substr($m, 0, 4));
if ( strlen($m) < 6 )
$thismonth = '01';
else
$thismonth = ''.zeroise(intval(substr($m, 4, 2)), 2);
} else {
$thisyear = gmdate('Y', current_time('timestamp'));
$thismonth = gmdate('m', current_time('timestamp'));
}

$unixmonth = mktime(0, 0 , 0, $thismonth, 1, $thisyear);

// Get the next and previous month and year with at least one post
$previous = $wpdb->get_row("SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
FROM $wpdb->posts
WHERE post_date < '$thisyear-$thismonth-01'
AND post_type = 'post' AND post_status = 'publish'
ORDER BY post_date DESC
LIMIT 1");
$next = $wpdb->get_row("SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
FROM $wpdb->posts
WHERE post_date > '$thisyear-$thismonth-01'
AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' )
AND post_type = 'post' AND post_status = 'publish'
ORDER BY post_date ASC
LIMIT 1");

/* translators: Calendar caption: 1: month name, 2: 4-digit year */
$calendar_caption = _x('%1$s %2$s', 'calendar caption');
echo '

';
echo '
';

$myweek = array();

for ( $wdcount=0; $wdcount<=6; $wdcount++ ) {
$myweek[] = $wp_locale->get_weekday(($wdcount+$week_begins)%7);
}

foreach ( $myweek as $wd ) {
$day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd);
$wd = esc_attr($wd);
echo "\n\t\t

";
}

echo '

';

if ( $previous ) {
echo "\n\t\t".'

';
} else {
echo "\n\t\t".'

';
}

echo "\n\t\t".'

';

if ( $next ) {
echo "\n\t\t".'

';
} else {
echo "\n\t\t".'

';
}

echo '

';

// Get days with posts
$dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(post_date)
FROM $wpdb->posts WHERE MONTH(post_date) = '$thismonth'
AND YEAR(post_date) = '$thisyear'
AND post_type = 'post' AND post_status = 'publish'
AND post_date < '" . current_time('mysql') . '\'', ARRAY_N);
if ( $dayswithposts ) {
foreach ( (array) $dayswithposts as $daywith ) {
$daywithpost[] = $daywith[0];
}
} else {
$daywithpost = array();
}

if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'camino') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'safari') !== false)
$ak_title_separator = "\n";
else
$ak_title_separator = ', ';

$ak_titles_for_day = array();
$ak_post_titles = $wpdb->get_results("SELECT post_title, DAYOFMONTH(post_date) as dom "
."FROM $wpdb->posts "
."WHERE YEAR(post_date) = '$thisyear' "
."AND MONTH(post_date) = '$thismonth' "
."AND post_date < '".current_time('mysql')."' "
."AND post_type = 'post' AND post_status = 'publish'"
);
if ( $ak_post_titles ) {
foreach ( (array) $ak_post_titles as $ak_post_title ) {

$post_title = esc_attr( apply_filters( 'the_title', $ak_post_title->post_title ) );

if ( empty($ak_titles_for_day['day_'.$ak_post_title->dom]) )
$ak_titles_for_day['day_'.$ak_post_title->dom] = '';
if ( empty($ak_titles_for_day["$ak_post_title->dom"]) ) // first one
$ak_titles_for_day["$ak_post_title->dom"] = $post_title;
else
$ak_titles_for_day["$ak_post_title->dom"] .= $ak_title_separator . $post_title;
}
}

// See how much we should pad in the beginning
$pad = calendar_week_mod(date('w', $unixmonth)-$week_begins);
if ( 0 != $pad )
echo "\n\t\t".'

';

$daysinmonth = intval(date('t', $unixmonth));
for ( $day = 1; $day <= $daysinmonth; ++$day ) {
if ( isset($newrow) && $newrow )
echo "\n\t

\n\t

\n\t\t";
$newrow = false;

if ( $day == gmdate('j', (time() + (get_option('gmt_offset') * 3600))) && $thismonth == gmdate('m', time()+(get_option('gmt_offset') * 3600)) && $thisyear == gmdate('Y', time()+(get_option('gmt_offset') * 3600)) )
echo '

';

if ( 6 == calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins) )
$newrow = true;
}

$pad = 7 - calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins);
if ( $pad != 0 && $pad != 7 )
echo "\n\t\t".'

';

echo "\n\t

\n\t

\n\t

';
//INICIO seccion cambiada
$unixPrimero=mktime(0,0,0,4,5,2003);
$anoAnterior="";
$unixUltimo=time();
echo '

';
// $mesSegundo=$primerMes + 2592000;
// echo date('F Y', $mesSegundo);
// $mesActual="";
// echo sprintf($calendar_caption, $wp_locale->get_month($thismonth), date('Y', $unixmonth));
//FIN seccion cambiada
echo '

$day_name
« ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '     ' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' »  
 
';
else
echo '
';

if ( in_array($day, $daywithpost) ) // any posts today?
echo '$day";
else
echo $day;
echo '

 

";

$output = ob_get_contents();
ob_end_clean();
echo $output;
$cache[ $key ] = $output;
wp_cache_set( 'get_calendar', $cache, 'calendar' );
}

Podeis ver como queda echando un vistazo al calendario que aparece en estas páginas, en la columna de la derecha.

Versión 9.0

Miércoles, 17 de febrero de 2010

Al final, lo que iban a ser unos “añadidos” en la web han pasado a convertirse en la versión 9.0 de Cuaderno de campo.
Estéticamente los cambios no son muchos, los que más lo noten serán los usuarios de Internet Explorer (me armé de valor he instalé internet explorer 7.0 en el VMPlayer, … que lamentable navegador el puto IE…).
Básicamente he optimizado bastante el código de la versión anterior, especialmente el CSS pero tambien javascript y bastante PHP especialmente el plugin FAlbum, las plantillas de estilo y alguna funcion de WordPress.
Ahora las páginas pensan algo menos, menos accesos a base de datos y menos plugins. He homogeneizado las areas de fotografia, video y panorámicas, las estadísticas del blog, etc…
En fín. No lo he probado muy a fondo en todos los navegadores, pero creo que se vé igual en Konqueror, Firefox, IE, Opera y G. Chrome

Más apuntes anteriores en la categoria WordPress