Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Incluir tipos de contenido personalizado (custom post types) en el feed principal de un sitio web WordPress

Por omisión en el feed principal de un sitio que funciona con WordPress se muestran las entradas del tipo de contenido post. Para incluir otros tipos de contenidos se puede usar el siguiente código, añadiéndolo al archivo functions.php:

add_filter( 'pre_get_posts', 'prefix_custom_feed' );
function prefix_modify_feed( $query ) {
        if ( $query->is_feed() )
            $query->set( 'post_type', array( 'post', 'link' ) ); 
        return $query;
}

También se puede obtener un feed combinado modificando los parámetros de la URL del feed, de la siguiente manera:

https://voragine.net/feed?post_type[]=post&post_type[]=link

Ejecutar acciones al activar o desactivar un theme en WordPress

Imago voragine.net
[actualizado el ] • Por
Al activar un theme de WordPress hay veces que viene bien modificar algún valor de configuración de WordPress para que el theme funcione plenamente sin que el usuario tenga que hacer nada. Por ejemplo activar el registro de usuarios que por defecto está deshabilitado. Igualmente, hay que prever dejar todo como estaba cuando el theme se desactive. Para ello WordPress dispone de dos hooks a los que podemos asociar acciones.

Cómo habilitar el uso de shortcodes en los widgets de WordPress

Para usar cualquier shortcode en los widgets de WordPress, y de esa manera evitar el uso de algunos plugins, basta añadir la siguiente línea al archivo functions.php del theme que se esté usando.

add_filter('widget_text', 'do_shortcode');

Una vez añadida la línea podemos usar shortcodes en el contenido de cualquier widget de texto.

Cómo «encolar» o cargar hojas de estilo antes que el CSS del theme en WordPress

Imago voragine.net
[actualizado el ] • Por Enlace permanente

En WordPress las hojas de estilo de un theme o un plugin se deben cargar usando las funciones wp_register_style y wp_enqueue_style. En el caso de un theme estas funciones se llaman desde el archivo functions.php. La hoja de estilo principal del theme, style.css, no hace falta cargarla ya que WordPress la carga automáticamente.

Cuando llamamos otra hoja de estilo, además de style.css, ésta se carga por omisión después que style.css. Para invertir este orden hay que indicar que style.css tiene como dependencia la otra hoja de estilo.

Por ejemplo, si estamos desarrollando un theme con el framework Bootstrap de Twitter y queremos cargar su CSS antes que el style.css del theme:

add_action( 'wp_enqueue_scripts', 'prefix_load_css_files' );
function prefix_load_css_files() {
   wp_register_style( 'bootstrap-css', get_template_directory_uri() . '/bootstrap/css/bootstrap.min.css' );
   wp_register_style( 'theme-css', get_stylesheet_uri(), array('bootstrap-css') );
   wp_enqueue_style('theme-css');
}

El tercer parámetro que pasamos a la función wp_register_script son las dependencias. En la línea 4 estamos indicando que la hoja de estilos del theme tiene como dependencia la hoja de estilos de bootstrap, así que debe cargarse después.

Cómo modificar el shortcode caption de WordPress para adaptarlo a HTML5 y hacerlo más responsive

Imago voragine.net
[actualizado el ] • Por
El shortcode caption es el que usamos, aún sin darnos cuenta, para introducir imágenes con pie de foto en el contenido de un post o página. Aunque dispone de algunos parámetros que nos permiten configurar mínimamente el estilo, la salida que genera no cuenta con las marcas semánticas para imágenes de HTML5. Además el shortcode define un ancho absoluto para la imagen, haciendo que el código no sea responsive. Modificando el shortcode con una función que podemos incluir en un plugin o en el archivo functions.php del theme, podemos añadir estas dos características al caption.

Cambiar la extensión por omisión del excerpt o extracto en WordPress

El excerpt de WordPress, si no se define para un post, está programado para seleccionar las 55 primeras palabras del contenido del post.

Si se quiere cambiar esta extensión se puede incluir el siguiente código en el archivo functions.php del theme:

// configurando la extensión por omisión del excerpt a 20 palabras
function prefijo_excerpt_length( $length ) {
        return 20;
}
add_filter( 'excerpt_length', 'prefijo_excerpt_length', 999 );

Añadir algunas capacidades a un tipo de usuario (rol) en WordPress

Imago voragine.net
[actualizado el ] • Por
WordPress dispone de cinco tipos de usuario, cinco roles, con capacidades diferentes. Hay veces que ninguno de estos tipos se ajusta exáctamente al uso que un usuario hará de una página con WordPress. En estos casos podemos añadir o eliminar capacidades o permisos a uno de los cinco tipos de usuario, para adaptarlo a nuestras necesidades.

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.