Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Entendiendo el sistema de paginación de WordPress: paginando el archivo, los resultados de búsqueda o un custom post type

Imago voragine.net
• Por

La función que ofrece WordPress para introducir una barra con enlaces a las diferentes páginas de resultados es paginate_links, es decir, un paginador de resultados del tipo "Anterior, 1, 2, 3, ..., Siguiente".

Esta función se encarga de construir las URLs para cada página de resultados, y es eficaz, salvo si entran en juego otros parámetros en la URL, por ejemplo s si queremos paginar los resultados de una búsqueda o post_type si estamos paginando un loop para un post type diferente a post. En estos casos, tendremos que ayudar a paginate_links a construir las URLs.

Para ello tenemos que darle a WordPress la siguiente información:

  • El loop a paginar.
  • El número total de páginas, en función de la cantidad de posts en el loop y la página actual en la que se está.
  • Los parámetros de la URL que queremos mantener en los enlaces a las distintas páginas.

Cómo obtener y mostrar la descripción, o caption, de las imágenes destacadas (post thumbnail) en WordPress

Imago voragine.net
• Por
WordPress ofrece la posibilidad de asignar una imagen destacada, post thumbnail en el argot de WordPress, a cada post, lo cual da mucha flexibilidad a la hora de mostrar el contenido y esta imagen de manera independiente. Para manejar las imágenes destacadas hay distintas funciones, pero ninguna de ellas permite obtener la descripción, o caption, que podemos añadir a la imagen en el administrador de WordPress. Para obtener la descripción, y otras informaciones de una imagen destacada, tenemos que recurrir a la función genérica get_post.

Cómo ordenar un loop de WordPress siguiendo varios criterios: multiple orderby

El parámetro orderby de la clase WP_Query de WordPress puede ser múltiple. Así podemos componerlo con múltiples criterios, siendo el primero el dominante.

Por ejemplo, si queremos ordenar un loop bajo los criterios title y menu_order, y que el título del post sea dominante, pasaremos los siguientes parámetros a WP_Query:

$args = array(
  'post_type' => 'page',
  'orderby' => 'title menu_order',
  'order' => 'ASC'
);
Contexto

Qué hacer si la plantilla single de un custom post type de WordPress no muestra el post

Hay veces que, tras configurar un custom post type, y definir la plantilla single para mostrarlo, ya sea la genérica single.php o una específica single-post-type-name.php, la URL de cualquier entrada de ese custom post type nos devuelve un error 404, si tenemos creada la plantilla 404.php, o la portada, el index.php, si no la tenemos creada.

Esto es fácil de solucionar, pero no es nada intuitivo: basta volver a guardar la Estructura de permalinks en el panel de admininstración, en la pestaña Configuración general, Estructura de permalinks.

Si queremos que esto se haga automáticamente, para que un theme recién instalado y activado no dé problemas, podemos incluir la función flush_rewrite_rules() en el archivo functions.php del theme después de crear el custom post type.

Cómo eliminar elementos del menú de administración de WordPress

Para eliminar elementos de los menús de administración de WordPress, y en consecuencia el acceso a determinadas secciones, se puede añadir el siguiente código al archivo functions.php del theme:

add_action( 'admin_menu', 'prefix_remove_dashboard_item' );
function prefix_remove_dashboard_item() {
  //remove_menu_page( 'index.php' );                  //Dashboard
  remove_menu_page( 'edit.php' );                   //Posts
  //remove_menu_page( 'upload.php' );                 //Media
  //remove_menu_page( 'edit.php?post_type=page' );    //Pages
  remove_menu_page( 'edit-comments.php' );          //Comments
  //remove_menu_page( 'themes.php' );                 //Appearance
  //remove_menu_page( 'plugins.php' );                //Plugins
  //remove_menu_page( 'users.php' );                  //Users
  //remove_menu_page( 'tools.php' );                  //Tools
  //remove_menu_page( 'options-general.php' );        //Settings
}

En el ejemplo de arriba estamos eliminando el acceso a los Posts y a los comentarios.

Cómo estructurar correctamente el archivo functions.php de un theme de WordPress: algunas buenas prácticas

Imago voragine.net
• Por
El archivo functions.php aloja fragmentos de código que queremos cargar en momentos y lugares diferentes, y para no repetirlos cada vez, convertimos en funciones que llamamos para que ejecuten su misión. funcions.php puede contener funciones a las que llamaremos en otras plantillas para construir el theme, otras a las que llamará un usuario desde el administrador (mediante shortcodes por ejemplo), y otras que cargarán funcionalidades adicionales a las que WordPress incluye de base (tipos de contenido personalizado, elementos extra en el administrador...). El archivo functions.php es el lugar para alojar la lógica del theme, las funciones. Y las plantillas alojarán el HTML y las llamadas a las funciones que sean necesarias. Así la edición del theme es más sencilla, porque todas las funciones están en el mismo sitio, y las plantillas permanecen limpias y ordenadas. A su vez las funciones dentro de functions.php deben seguir una estructura que permita llamarlas cuando son necesarias, modificaciones de otros programadores (por ejemplo en un )child theme, activarlas y desactivarlas de manera sencilla... Para tener un buen functions.php, conviene estructurarlo siguiendo una serie de buenas prácticas.

Entradas relacionados en WordPress sin necesidad de plugin

Imago voragine.net
• Por
Hace tiempo publiqué una manera de obtener un listado de posts relacionados en WordPress. Aquel método relacionaba contenido en base a las etiquetas comunes. Publico en esta entrada una receta que además añade las categorías: si no se encuentran etiquetas en común, se analizan las categorías. Además el código está estructurado en una función para incluirlo en functions.php, a la que podemos llamar desde cualquier plantilla, manteniendo el theme limpio y ordenado. El código ha sido desarrollado originalmente por Justin Tallant, que además acompaña el código de una buena reflexión sobre por qué es mejor un desarrollo propio que un plugin en este caso. La versión que publico aquí contiene algunas modificaciones que he añadido.

Formatos de post en voragine.net

Hace tiempo que voragine.net es mi archivo personal de temas que investigo. Cada vez recurro más al blog para buscar un trozo de código, una referencia o un enlace. Personalmente utilizo los post para documentar más o menos detalladamente aprendizajes, como unidades con cierta entidad. Esta regla que me he marcado, sin saber muy bien por qué, hace que no haya publicado muchas cosas interesantes y a las que he querido recurrir después y no he conseguido volver a encontrar en internet.

Para recopilar todos estos materiales me he decidido a implementar los formatos de post en voragine.net: Minientradas, enlaces, citas y vídeos. Aquí va la primera minientrada.

Etiquetas meta en la cabecera de tu WordPress para compartir correctamente tu blog en Facebook y Twitter

Imago voragine.net
[actualizado el ] • Por

Al compartir un contenido de una web en Facebook y Twitter podemos definir la información que aparecerá en cada uno de los timelines: el título, un resumen del contenido, una imagen, incluso algo de información sobre el autor. Para Facebook basta con añadir unas cuantas etiquetas meta que definan estos contenidos; en el caso de Twitter hay que hacer además una petición para que concedan al dominio la capacidad de generar lo que han llamado cards, el sistema que permite añadir información a los tuits, más allá de los 140 caracteres.

Lo interesante es generar estas etiquetas de manera dinámica usando las funciones de WordPress, para que se adapten al contenido de cada página de nuestra web.