Una de las nuevas características que traen las versiones de WordPress 2.0 para arriba es la vista previa de los posts. Cuando queremos editar un post antiguo o tenemos uno en borrador, debajo del formulario respectivo hay una vista previa no sólo del nuevo post, sino de todo nuestro blog, con cabecera, pié de página, barra lateral y demás adornos.
La vista previa, para muchos usuarios puede ser útil, pero en mi caso es una gran molestia y el 99.99% de las veces no la necesito. Es una lástima que WordPress no la tenga como una característica opcional, para que en lugar de cargar en la misma página tengamos un botón o un URL que nos direccione a un preview en una nueva pestaña/página.
La vista previa es molesta porque si tenemos un post con varias fotos y videos, el editarlo tomará un largo tiempo de carga, retrasando nuestro proceso de actualización, desperdiciando nuestro ancho de banda del servidor y además si tenemos Ad-Sense aumentaremos el número de vistas innecesariamente.
Anteriormente probé 2 plugins para WordPress 2.1: Kill Preview 2 y IWG Outline Preview. ambos nos llegan desde Alemania con amor. Lamentablemente ninguno de los dos me ha funcionado, porque me muestran una página en blanco cada vez que quiero editar un post existente. Ambos autores saben de este problema y aún no dan con una solución.
La solución definitiva viene de la mano de hypercubed, quien rectifica que no hay opción de lograrlo mediante un plugin, pero si mediante la edición directa del código PHP de WordPress.
La solución: editar el código fuente
No hay que asustarse, esta parte es fácil y no dañará nada.
Tenemos que abrir el archivo post.php ubicado en el directorio wp-admin.
Para WordPress 2.1
Abrimos el archivo post.php y en la linea 72 sustituimos:
<iframe src="<?php echo attribute_escape(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID)))); ?>" width="100%" height="600" ></iframe>
por:
<script type="text/javascript">
<!--
function show_preview() {
var elm = document.getElementById("frm_preview");
elm.src = "<?php echo attribute_escape(apply_filters('preview_post_link', add_query_arg('preview', 'true', get_permalink($post->ID)))); ?>";
elm.height = "600";
return false;
}
-->
</script>
<a href="#preview-post" onclick="show_preview();">Show Preview</a>
<iframe id="frm_preview" src="" width="100%" height="10" ></iframe>
Para WordPress 2.0
Abrimos el archivo post.php y en la linea 85 sustituimos:
<iframe src="<?php the_permalink(); ?>" width="100%" height="600" ></iframe>
por:
<script type="text/javascript">
<!--
function show_preview() {
var elm = document.getElementById("frm_preview");
elm.src = "<?php the_permalink(); ?>";
elm.height = "600";
return false;
}
-->
</script>
<a href="#preview-post" onclick="show_preview();">Show Preview</a>
<iframe id="frm_preview" src="" width="100%" height="10" ></iframe>
Para WordPress 2.0.1
Se sustituye la linea 83 por:
<script type="text/javascript">
<!--
function show_preview() {
var elm = document.getElementById("frm_preview");
elm.src = "<?php echo add_query_arg('preview', 'true', get_permalink($post->ID)); ?>";
elm.height = "600";
return false;
}
-->
</script>
<a href="#preview-post" onclick="show_preview();">Show Preview</a>
<iframe id="frm_preview" src="" width="100%" height="10" ></iframe>
Para futuras versiones
La única diferencia en estas 3 opciones es el número de linea a cambiar y el codigo PHP del iframe src.
Nótese que el contenido PHP que estaba en iframe src se incluye exactamente igual dentro de elm.src en todos los casos. Esto aclaro por si en una futura versión de WordPress este código cambiara, como lo ha venido haciendo, sólo modificamos esa parte y este hack seguirá funcionando a la perfección
Esperemos que WordPress recapacite y pronto tenga algo similar funcionando por defecto.