Wordpress (Continuación)

Estos últimos meses he dedicado buena parte del tiempo a profundizar en WordPress (y PHP) con el fin de personalizar la plantilla e incorporar nuevas funcionalidades. Intentaré a partir de ahora ofrecer los lunes trucos sencillos. Aquí tienen el primero de ellos:

En el editor de texto de WordPress aparece la opción "Insertar etiqueta More" que nos permite "cortar" la entrada en el punto que deseamos. De esta forma, aún cuando usemos "the_content" no se mostrará la entrada completa sino solo la parte definida por la mencionada etiqueta.

Existe, no obstante, una forma para hacerlo de forma automática en función del número de palabras que contenga la entrada:

<?php
global $post;
$numcontent = str_word_count($post->post_content);
if ($numcontent > 200) {
echo the_excerpt();
} else {
echo the_content();
}
?>

Si la entrada tiene más de 200 palabras, se muestra un resumen. En caso contrario, todo el texto. El código debe añadirse en The Loop, y lo normal sería incluirlo en "index.php" y "archive.php".

Ahora bien, la función "the_excerpt" presenta un problema, a saber, devuelve texto plano. Esto significa que negritas, cursivas, enlaces o cualquier otra etiqueta HTML desaparece. Para solucionarlo es aconsejable usar el plugin Advanced Excerpt. Su configuración es muy sencilla y permite seleccionar las etiquetas HTML que aparecerán en el resumen.

Actualización Mayo 2017

La opción para eliminar los shortcodes (y la leyenda de las imágenes) del mencionado plugin no funciona. En esta otra entrada explico como solucionarlo.

Desde el principio, uno de mayores problemas ha sido encontrar un plugin que permitiera buscar en el blog de forma rápida y eficiente. Después de mucho tiempo usando Search Unleashed no ha quedado más remedio que buscar otra alternativa ya que no funciona con la versión 3.x de WordPress. El elegido para suplirlo ha sido Relevanssi. No es tan tan potente como el anterior u otros buscadores compatibles, pero lo he probado esta misma tarde y parece que su funcionamiento es más que correcto. Devuelve los resultados con velocidad y permite la búsqueda de frases exactas (usando comillas). Veremos lo que ocurre en la Revista de Prensa pues allí tenemos más de 30.000 entradas.

Hace unos días me ofrecí a compartir el código del archivo por meses con la comunidad de la excelente bitácora Ayuda WordPress en Español, y de ahí este comentario.

Por defecto, los meses se muestran uno debajo de otro pero cuando llevas un tiempo en la Red la lista se hace interminable. De ahí que buscara y aplicará un sistema que permitiera incluir los meses de cada año en una sola línea. Por desgracia, no recuerdo de dónde lo obtuve y pido por ello disculpas a su autor pues no puedo citarlo.

El código se inserta en archives.php del tema y aquí lo tenéis en formato txt.

<?php
global $month, $year; // scope WP global variables for later use
/* $arc_years => archive years query */
$arc_years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date DESC");
foreach($arc_years as $arc_year) : // foreach loop for archive years
?>
<ul>
<li><p>Archivo año <a href="<?php echo get_year_link($arc_year); ?> "><?php echo $arc_year; ?></a>:</p>
<?php
/* $arc_months => archive months query for archive year */
$arc_months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE YEAR(post_date) = '$arc_year' AND post_status = 'publish' ORDER BY post_date");
foreach($arc_months as $arc_month): // foreach loop for archive months of archive year
?>

:: <a href="<?php echo get_month_link($arc_year, $arc_month); ?> "><?php echo $month[zeroise($arc_month, 2)]; ?></a>

<?php endforeach; // end foreach loop for archive months ?>
 ::</li></ul>
<?php endforeach; // end foreach loop for archive years ?>


Con más dificultades de la previstas, ya tenemos lista la nueva plantilla. El principal problema radica en el excesivo consumo de memoria del 'theme' pero lo hemos solucionado añadiendo una línea en el .htaccess (php_value post_max_size 60M). La identificación tanto del problema como del remedio no ha sido tarea fácil porque la única pista era un comportamiento anómalo de la sección de comentarios en el panel de control de WordPress.

En cualquier caso, lo importante ahora es dar a conocer las novedades relacionadas con los comentarios:

  • Aviso de nuevos comentarios por e-mail. De momento es necesario escribir un comentario en la entrada pertinenete para optar a esta opción. La suscripción no se aplica a todas las entradas sino solo a las que ustedes elijan. Como es lógico, pueden darse de baja en cualquier momento.
  • Respuestas a otros comentarios:
    1. Rellenan los campos: la contestación aparece en último lugar.
    2. Pulsan en "Contestar" de un comentario en particular: su contestación aparece debajo del que contestan.
    3. Pulsan en Q (Quote, cita) de un comentario en particular: igual que el primer caso pero se inserta automáticamente el texto del comentario al que contestan.

Ahora solo resta recuperar el tiempo perdido, actualizar la Revista de Prensa y volver a la actividad normal de la bitácora.

Nota: iba a escribir "volver a la rutina" pero me he acordado de Fernando Lázaro Carreter y enseguida me ha venido a la memoria el verdadero siginficado de "rutina": costumbre inveterada, hábito adquirido de hacer las cosas por mera práctica y sin razonarlas. Aquí podremos hacer las cosas bien o mal pero nunca sin ton ni son.

Modificar una plantilla para adaptarla a nuestro gusto puede convertirse en un calvario si no podemos realizar las pruebas con tranquilidad. Para ello es imprecindible instalar wordpress en nuestro disco duro. Parece muy complicado pero nada más lejos de la realidad:

  1. Descargar e instalar Wampserver (fácil instalación y en español). Los archivos se crean en el directorio raíz del disco duro (carpeta 'wamp')
  2. Acceder a phpMyAdmin y crear una base de datos (v.g. prueba).
  3. Descargar wordpress en C: /wamp/www/
  4. Renombramos el archivo config-sample.php a config.php y lo editamos para que las siguientes líneas queden así:
    define('DB_NAME', 'prueba o el nombre que le hayáis puesto a la base de datos');
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    define('DB_HOST', 'localhost');
    Si hemos descargado la versión en español, ya estará definido el lenguaje. Comprobar no obstante que es:
    define (’WPLANG’, ‘es_ES’);
  5. Localiza el archivo install.php (debería estar dentro del directorio en wp-admin). Para realizar la instalación hay que ejecutar dicho archivo y para ello hay que escribir la dirección completa en el navegador:
    http://localhost/wordpress/wp-admin/install.php y seguir las instrucciones.
  6. Para entrar basta poner http://localhost/wordpress/login.php

Quienes hayan actualizado el wordpress a la versión 2.6 se habrán encontrado con un problema si usan "index.php" en la estructura de los permalinks (enlaces permanentes). El problema consiste en que dichos enlaces no funcionan.

Se supone que en la próxima versión se corregirá este error, pero mientras tanto podemos solucionarlo de la siguiente forma:

  1. Si fuera preciso, cambiamos los permisos del .htacces a 666
  2. Ir a Opciones » Permalinks
  3. En «Opciones Comunes» dejamos la estructura personalizada tal y como la teníamos.
  4. En la sección «Opcional» rellenamos tanto «Categoría base» (v.g. categoria) como «Etiqueta base» (v.g. etiqueta).