WordPress Hooks

Esta es una de esas entradas del megatutorial de WordPress desde cero, quizá más avanzada de lo que eran las últimas entradas que he redactado, pero necesario igualmente. Poco a poco va estando completado y da igual el orden que sigamos, lo importante es aprender.

Antes de ponerte a desarrollar plugins, temas e incluso modificar una plantilla, deberías entender los Hooks (o ganchos, aunque nadie los llama así).

Hook

¿Qué son los Hooks?

Técnicamente son eventos, por ejemplo invocado por la llamada de do_action() o de apply_filters() que ejecutan después todas las llamadas a las funciones enganchadas a ese evento.

Básicamente, intentando simplificarlo, el proceso sería el siguiente:

  1. El hook invoca un observador, que se encarga de recoger una serie de funciones “enganchadas” al evento.
  2. Ejecuta las funciones utilizando call_user_func() de php.
  3. El código de dichas funciones son implementadas en el proceso del core sin modificarlo.

Lo sé, es una explicación un tanto simplista, pero vamos a ir poco a poco, prefiero que lo entiendas de forma sencilla.

Action Hooks y Filter Hooks

Como los Actions y Filters requieren del uso de Hooks para funcionar, lo más frecuente es que oigas hablar de Action Hooks y Filter Hooks. Y yo, que quiero facilitarte la vida, los llamaré así también (sin traducir) para que puedas buscar más facilmente documentación sobre ellos.

Su implementación es similar pero, como veremos a continuación, sus funciones y aplicaciones son totalmente diferentes.

Los Filter Hooks

Los Filter Hooks están diseñados para modificar contenido. Generalmente se enganchan a hooks de procesamiento de contenido; por ejemplo cuando lo guardamos o cuando lo representamos.

Un ejemplo básico de Filter Hook sería el siguiente, con el que modificamos todos los “wordpress” por “WordPress” en nuestros artículos.

<?php
   add_filter('the_content', ‘guorpres_vs_wordpress’);
   function guorpres_vs_wordpress($content) {
      return str_replace('wordpress', 'WordPress', $content);
}
?>

Atención:
No utilices los filter hooks para realizar shortcodes, para esto existe la función add_shortcode(), cuya utilización es muy sencilla.

Además, los filtros pueden ser reutilizados tantas veces como queramos, podemos utilizarlo múltiples veces y en diferentes tipos de contenido.

Como decía anteriormente, pueden modificar el contenido bien antes de guardarlo en la base de datos o bien más adelante, en la fase de renderizado del contenido.

Pero ojo, cuando hablamos de contenidos no hablamos sólo del contenido de artículos y páginas, sino también de autores, comentarios, widgets, enlaces del blogroll, fechas y horas, elementos del escritorio, etc. Todo de forma dinámica sin tocar el código del núcleo de WordPress.

Cómo crear Filter Hooks
Si quieres añadir un filter Hook tendremos que utilizar la función add_filter().

<?php add_filter( $tag, $function, $priority, $accepted_args ); ?>

Su uso es sencillo:

  • Tag: (string) A qué tipo de proceso de contenido debe ser aplicado el filtro
  • Function: (callback) La función a ejecutar.
  • Priority: (int) – opcional. Orden en el que debe ser ejecutado. A número más bajo antes se ejecutará. Por defecto 10.
  • Accepted Args: (int) – opcional Número de argumentos aceptados cuando utilizamos apply_filters() (WP >= 1.5.1). Por defecto 1.

Mi consejo es que os centréis en los dos primeros parámetros, la prioridad dependerá de otros factores.

A tener en cuenta, que la función será la que marque nuestro control sobre el contenido.

Los Action Hooks

Aunque similares en implementación, son completamente diferentes en funcionamiento.

Mientras que los Filter Hooks están enfocados a modificar y actualizar contenidos, los Action Hooks están diseñados para proporcionar una mayor flexibilidad en cómo se procesan los elementos, así como la posibilidad de añadir nuevas funciones al sistema (campos de texto, hojas de estilo, otros tipos de contenido, Custom Post Types, Metaboxes…).

Todo, como siempre, sin alterar el código original del core de WordPress.

Empecemos con un ejemplo:

<?php
   add_action(‘admin_menu', ‘mi_plugin_extraordinario’);
   function mi_plugin_extraordinario() {
      if(function_exists('add_submenu_page')) {
         add_submenu_page(‘plugins.php','Extraordinario', ‘Extraordinario’, 10, ‘my_new_plugin', 'my_new_plugin_admin_page_function');
      }
   }
?>

Digamos que todo Action Hook se ejecuta en tres fases (según el ejemplo anterior, obtendríamos):

  1. El Action: Obtiene el menú de administración.
  2. La petición: Cuando estés generando el Menú de administración, ejecuta esta función que añade un elemento bajo la sección de plugins.
  3. El Resultado: El menú es generado con nuestro enlace, justo debajo de la sección de plugins.

Cómo crear Action Hooks
Al igual que con los filter hooks tenemos una función que se encarga de esto, ¿Adivinas cuál es? En efecto, add_action().

<?php
   add_action($tag, $function, [$priority], [$accepted_args]);
?>

Y, una vez más, los parámetros:

  • Tag: (string) A qué tipo de proceso de contenido debe ser aplicado el filtro
  • Function: (callback) La función a ejecutar.
  • Priority: (int) – opcional Orden en el que debe ser ejecutado. A número más bajo antes se ejecutará. Por defecto 10.
  • Accepted Args: (int) – opcional Número de argumentos aceptados cuando utilizamos apply_filters() (WP >= 1.5.1). Por defecto 1.

Al igual que en los Filter Hooks, lo mejor es que te centres en las dos primeras. Ten en cuenta, de nuevo, que la función es la que marca el control sobre el hook. Vamos, que es con la que controlamos lo que queremos hacer.

Uso de Hooks de forma avanzada (Advance Hooking)

Además, podemos tener control sobre los hooks, conociendo y preguntando a WordPress en todo momento sobre su uso e implementación.

Para ello tenemos estas funciones:

  • has_action y has_filter: Detectan cuándo (o cuándo no) se ha añadido una función al array de hooks para un evento determinado.
  • did_action y did_filter: Detectan cuándo (o cuándo no) se ha invocado un evento. Cuidado, porque si tu evento no ha sido enganchado al hook pero se ha invocado, retornará true.
  • remove_action y remove_filter: Nos permiten eliminar una función específica de un evento determinado.
  • remove_all_actions y remove_all_filters: También podemos eliminar todas las funciones de un evento determinado. Con remove_all_actions(“the_content”, 4) eliminamos todas las funciones enganchadas al hook “the_content” con prioridad 4.
  • current_filter(): Sólo aplicable a los filtros; nos permite saber si el evento actual ha sido procesado.

Como ves, no profundizo en exceso en estas funciones, ya que tienes toda la información sobre ellas en el Codex y, realmente su explicación no es el propósito de esta entrada.

También puedes añadir tus propios Hooks en tu tema (funcions.php) o tu plugin, pero como da para otra entrada… Te lo explicaré más adelante.

Reordenar campos del formulario de facturación de WooCommerce

Otro código útil, esta vez uno que nos sirve para reordenar los campos del formulario de facturación que gestiona WooCommerce.

Para ello, tenemos que buscar el fichero form-billing.php de nuestra plantilla o del propio WooCommerce y buscar lo siguiente:

<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
   <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>

Esta parte es la encargada de llamar, uno a uno, a los campos que componen el formulario de facturación.

A continuación, tendremos que sustituirlo por este código:

<?php
// order the keys for your custom ordering or delete the ones you don't need
$mybillingfields=array(
    "billing_first_name",
    "billing_last_name",
    "billing_company",
    "billing_address_1",
    "billing_address_2",
    "billing_city",
    "billing_state",
    "billing_postcode",
    "billing_country",
    "billing_email",
    "billing_phone",
);
foreach ($mybillingfields as $key) : ?>
   <?php woocommerce_form_field( $key, $checkout->checkout_fields['billing'][$key], $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>

El array $mybillingfields gestiona los campos y el orden en que aparecen, por lo que basta con cambiar el orden de los elementos en ese array y cambiarán en el formulario final.

Fuente

Modificar label del formulario de facturación en WooCommerce

A veces, necesitamos modificar los textos de los labels del formulario de facturación de WooCommerce.

En el caso de WooCommerce, la llamada a este formulario se hace desde el siguiente código:

<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
	<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>

Si te fijas, es un búcle que recorre el array y va mostrando los campos con la función woocommerce_form_field.

En nuestro caso, nos interesa modificar el hook que llama a este array y decirle qué campo queremos modificar.

Para ello, lo que tenemos que hacer es ir a nuestro functions.php (el del tema que tengamos activado) y añadir el filtro que añadirá nuestros cambios:

// Añadimos el filtro al hook
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

Como ves, le estamos diciendo que queremos añadir un filtro llamado “custom_override_checkout_fields” al hook que gestiona los campos del checkout.

Ahora, sólo nos falta crear esa función que modifica dichos campos para poder pasarle algo al add_filter:

// Modificamos los campos que queramos - $fields es el array que pasamos a través del filtro.
function custom_override_checkout_fields( $fields ) {
     $fields['billing']['billing_last_name'] = array(
        'label'     => __('Apellidos', 'woocommerce'),
    'required'  => true,
    'class'     => array('form-row-last', 'validate-required', 'woocommerce-invalid', 'woocommerce-invalid-required'),
    'clear'     => true
     );
 
     return $fields;
}

En este ejemplo, estamos cambiando el label del campo “Last name” por “Apellidos” y, además, le estamos diciendo qué clases css debe incluir en la llamada. Si te fijas, también podemos decirle si es un campo requerido o no.

Más información en la documentación oficial de WooCommerce

Cambiar el orden de los elementos en la ficha de producto de WooCommerce

Sigo con la serie de códigos útiles para Woocommerce, me están saliendo en un proyecto con el que estoy actualmente y así no me olvido de ellos para otras ocasiones.

Esta vez explicaré cómo cambiar los elementos del hook que se encarga de llamar a las funciones de WooCommerce como “Mostrar título”, “Precio”, “Metas”, “Añadir al carrito” o “Mostrar el extracto”.

Lo primero que tenemos que entender es lo que es un hook. Un hook o gancho, es una función de WordPress donde podemos “enganchar” llamadas a otras funciones. Como ejemplos de hooks, están la cabecera, el footer, el contenido, etc.

En este caso, WooCommerce utiliza el hook “woocommerce_single_product_summary”, donde “engancha” funciones como “woocommerce_template_single_title”, “woocommerce_template_single_price” o “woocommerce_template_single_add_to_cart”.

El sistema de pesos en WordPress

Para entender cómo organiza estos contenidos, lo explicaré como si de pesos se tratara. Digamos que en programación hay varias formas de dar más relevancia o menos a elementos no organizables; una de las más utilizadas es el sistema de pesos (no confundir con el dinero jeje).

Este sistema funciona asignando un número (generalmente entero) al elemento a organizar y estableciendo un orden de prioridad (en este caso un número menor significa más prioridad).

Lo que conseguimos con esto, es organizar los elementos del producto en base a números, siendo 0 el de más prioridad y 50 el de menos; es decir, el que lleve el peso cero se mostrará encima del que lleve un peso mayor.

Sigamos con WooCommerce:

Este sistema de pesos es utilizado también por el hook que nos ocupa, teniendo por defecto los siguientes pesos:

/**
         * woocommerce_single_product_summary hook
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */

¿Qué significan estos pesos?
Estos pesos significan que los elementos “Título”, “Precio”, “Extracto”, “Añadir al carrito”, “Metas” y “Compartir” se van a mostrar en ese orden. Fíjate que los pesos son el número que tienen a la derecha (5, 10, 20, 30, 40 y 50).

Por lo tanto, el orden en que mostrará los elementos es:

  • Título
  • Precio
  • Extracto
  • Añadir al carrito
  • Metas
  • Compartir

Cambiar el orden de los elementos en la ficha de producto de WooCommerce

Si queremos cambiar el orden de aparición de estos elementos que conforman nuestra ficha de producto, deberemos decirle al hook qué acciones debe realizar; en este ejemplo, quitarle el peso actual al carrito para asignarle uno nuevo:

    remove_action( 'woocommerce_single_product_summary',
            'woocommerce_template_single_add_to_cart', 30 );
    add_action( 'woocommerce_single_product_summary',
            'woocommerce_template_single_add_to_cart', 15 );

Tras añadir esto al fichero functions.php de nuestro tema, el orden de los elementos será:

  • Título
  • Precio
  • Añadir al carrito
  • Extracto
  • Metas
  • Compartir

Fíjate en que el Añadir al carrito ha cambiado de posición.

¿Esto siempre funciona así?

No, depende del tema que estés utilizando es posible que hayan sobreescrito esta funcionalidad, introduciendo a mano las funciones que llaman al título, carrito y demás del producto. Pero esto es un problema para otro artículo.

Eliminar el “Gratis” del envío de Woocommerce

Aunque esta no sea una de las entradas que acostumbro a escribir (bastante más extensas), sí que me gustaría compartir con vosotros este código que elimina del carrito el “Gratis!” del envío cuando su coste es cero.

Si no sabes a lo que me refiero, mira la imagen siguiente:
Captura de pantalla 2015-02-10 a las 11.31.55

Pues para quitarlo, basta con incluir el siguiente código en el fichero functions.php del tema que estemos utilizando:

add_filter( 'woocommerce_cart_shipping_method_full_label', 'remove_local_pickup_free_label', 10, 2 );
function remove_local_pickup_free_label($full_label, $method){
    $full_label = str_replace("(¡Gratis!)","",$full_label);
return $full_label;
}

Si utilizas otro idioma, sustitulle el “(¡Gratis!)” por lo que quiera que diga tu idioma.

Cómo excluir post formats (formatos de entrada) de los Feed RSS

Excluir post format feed rss WordPress
Como ves, he actualizado el diseño de mi web (aunque todavía se encuentra en desarrollo, pero tenía tantas ganas de publicar este nuevo diseño…) y, entre las cosas que he incluído en esta nueva etapa están los Post formats o Formato de artículos.

¿Que son los Post Formats o Formato de artículo?

Los formatos de artículo o post formats son una funcionalidad de los temas de WordPress que se introdujeron allá por la versión 3.1.

De manera poco técnica, podemos decir que los post format son unos metaboxes que se utilizan para personalizar la presentación de un artículo.

Como siempre se entiende mejor con un ejemplo, disponemos de los siguientes tipos de formato para artículos:

  • aside: Normalmente mostrado sin título, como las actualizaciones del muro de Facebook.
  • gallery: Galería de imágenes. (Qué obvio, ¿verdad?)
  • link: Un enlace a otro sitio. Los temas usarán (al menos es lo que se pretendía) la primera etiqueta <a> para enlazar el contenido del artículo.
  • image: Una imagen solo. La primera etiqueta img será considerada la imagen del artículo. El título del artículo será utilizado como título de la imagen.
  • quote: Probablemente es de los más utilizados en los blogs personales (aparte del artículo convencional). Permite introducir una cita como artículo.
  • status: Similar a la actualización de Twitter.
  • video: Un vídeo o playlist de vídeos. La primera etiqueta video, object o embed en el artículo será tomada el vídeo en sí.
  • audio: igual que con el vídeo, pero con audio. Se utiliza con frecuencia para los sitios con podcast, por ejemplo.
  • chat: Una transcripción de una conversación de chat.

Aunque los temas de WordPress no tiene por qué incluir soporte para formatos de entrada, la verdad es que para un blog personal es bastante útil.

¿Qué usos tienen los Post Formats o Formatos de artículo?

Básicamente cumplen la función de diferenciar los contenidos. No es lo mismo un tutorial con código, que una foto de mi nuevo ordenador o que una cita de Winston Churchil.

Esto, entre otras cosas, permite hacer cosas chulas como mostrar de manera diferente los artículos convencionales de las galerías de fotos, fotos y vídeos.

Cómo lo uso yo

Aunque todavía no he comenzado a compartir cosas como me gustaría, he preparado mi blog para hacerlo más personal sin dañar a los suscriptores; ¿Recuerdas cuando hace unos meses pregunté sobre las suscripciones?

Digamos que quiero compartir más cosas (sobre mis gustos, además de los artículos que normalmente comparto) sin perjudicar a los suscriptores ni mezclar las cosas.

He utilizado los post formats precisamente para esto. Más tipos de contenidos, mismo blog, diferentes funciones.

Ahora, mi lista de correo (a la que puedes apuntarte desde aquí) seguirá recibiendo los mismos contenidos y artículos y yo podré compartir todo lo que quiera (fotos de gatitos incluídas) sin molestarles o privarles del contenido que realmente vale la pena.

¿Cómo excluimos los post formats del Feed RSS?

Para excluir de forma permanente los tipos de entrada del Feed RSS tenemos que incluir las siguientes lineas en el fichero functions.php de nuestro tema:

// Oculta los post formats que le digamos de los Feed RSS:
function exclude_post_formats_from_feeds( $wp_query ) {
 
	// Sólo aplicamos si es una consulta del feed:
	if ( $wp_query->is_feed() ) {
 
		// Array que contiene los post formats que queremos omitir del feed, 
		// por slug. -> ejemplo "post-format-{formato}"
		$post_formats_to_exclude = array(
			'post-format-status',
			'post-format-aside',
			'post-format-quote'
		);
 
		// Consulta extra para pulir el objeto wp_query:
		$extra_tax_query = array(
			'taxonomy' => 'post_format',
			'field' => 'slug',
			'terms' => $post_formats_to_exclude,
			'operator' => 'NOT IN'
		);
 
		$tax_query = $wp_query->get( 'tax_query' );
		if ( is_array( $tax_query ) ) {
			$tax_query = $tax_query + $extra_tax_query;
		} else {
			$tax_query = array( $extra_tax_query );
		}
		$wp_query->set( 'tax_query', $tax_query );
	}
}
 
// Llamamos a la función de arriba antes de cualquier consulta de WordPress
add_action( 'pre_get_posts', 'exclude_post_formats_from_feeds' );

Y con esto, hemos excluído todos los post formats que hemos querido de nuestro Feed RSS, así no molestamos a nuestros subscriptores con contenidos no relevantes.

En el futuro hablaré más detenidamente de cómo añadir formatos de entrada y configurarlos adecuadamente en nuestro tema de WordPress.

Este artículo está inspirado en el de Joss Crowcroft.

Imagen de Adrian Wallett, con licencia Creative Commons.

Solucionar problema iOS 6 y 7 con las unidades vw y vh

En esta ocasión y tras mucho tiempo, os traigo un artículo breve para explicar cómo solucionar un bug o error que existe en Safari, concretamente en la versión del mismo para iOS 6 y iOS 7.

Estoy preparando, entre otras cosas, mi página web para el 2015 (espero tenerla antes) y he hecho alguna cosilla chula utilizando los vh (viewport height o unidad relativa a la altura visible del navegador).

El caso es que he utilizado Firefox para maquetar el nuevo diseño y al probarlo en otros navegadores ha funcionado perfecto. El problema ha llegado al probar iOS 7, donde la unidad vh no respondía según lo esperado.

Teóricamente (y digo teóricamente porque es lo que he leído buscando sobre el error), es un bug relacionado con el manejo de la pantalla retina en iOS 6 y 7.

La solución

Para solucionarlo, os dejo un trozo de código que podéis pegar en vuestro fichero de javascript (o meterlo como script) que convierte las unidades viewport a píxeles haciendo un cálculo sencillo:

/* Fix iOS 7 bug for -unit support */
var iOS = navigator.userAgent.match(/(iPod|iPhone|iPad)/);
if(iOS){
    function iosVhHeightBug() {
        var height = $(window).height();
        $("#capa-para-redimensionar").css('min-height', height);
    }
 
    iosVhHeightBug();
    $(window).bind('resize', iosVhHeightBug);
}

Como siempre, dar las gracias a la fuente por compartir conocimiento.

Sincronizar plugins y preferencias de Sublime Text 2 con Dropbox

Sublime text icon

Como sabrás si me lees con frecuencia, me encanta Sublime Text 2 y, desde que la actualización de OSX es gratuita (la última ha sido Yosemite), tengo las preferencias de este editor de texto sincronizadas con Dropbox. Esto me permite instalarlo en cualquier equipo con las mismas preferencias de una forma rápida y sencilla.

Como nota previa, aquí tienes un artículo que escribí hace tiempo donde explico algunos de los plugins y configuraciones que utilizo.

Windows

Primer tendrás que crear una carpeta en tu instalación de Dropbox, como por ejemplo en la siguiente ruta:


{Ruta de Dropbox}/sublime

Ahora necesitarás saber dónde guarda Sublime Text las preferencias. Basta con abrir “Browse Packages” (dentro de Preferencias)

Yo lo encontré aquí:


C:\Users\nombreDeUsuario\AppData\Roaming\Sublime Text 2\Packages

A partir de aquí, asegúrate de que has cerrado completamente Sublime Text.

Copia las carpetas Packages, Installed Packages y Pristine Packages a la carpeta que creaste en Dropbox en el primer paso.

Llegados aquí, elimina las carpetas originales de la carpeta de Sublime Text.

Abre un terminal (CMD) con permisos de administrador y navega al directorio anterior (donde se guardan los parámetros de Sublime por defecto) y crea los siguientes enlaces simbólicos:


mklink /D "Installed Packages" "C:\path\to\Dropbox\appdata\sublime\Installed Packages"

mklink /D "Packages" "C:\path\to\Dropbox\apps\sublime\Packages"

mklink /D "Pristine Packages" "C:\path\to\Dropbox\apps\sublime\Pristine Packages"

Ahora deberías poder abrir Sublime Text y todo debería funcionar correctamente.

Mac
Los pasos son similares, pero repasemos atentamente.

Cierra Sublime Text 2 completamente (CMD+Q o Manzana en la barra superior y pulsar sobre Salir)

Abre una Terminal (Aplicaciones -> Utilidades -> Terminal) y sitúate en la carpeta donde Sublime Text guarda las configuraciones:


cd ~/Library/Application\ Support/Sublime\ Text\ 2/

Copia sus contenidos a la carpeta que creaste en Dropbox:


cp ~/Library/Application\ Support/Sublime\ Text\ 2/* ~/Dropbox/sublime/

Crea enlaces simbólicos a la nueva ruta ubicada en Dropbox:


ln -s ~/Dropbox/sublime/Installed\ Packages ./Installed\ Packages
ln -s ~/Dropbox/sublime/Packages ./Packages
ln -s ~/Dropbox/sublime/Pristine\ Packages ./Pristine\ Packages

Ahora deberías poder ejecutar Sublime Text sin problemas.

Espero que esta entrada te haya sido de ayuda tanto como lo es para mí.

Administración de contenido en WordPress: las Páginas

paginasWordPress

Como expliqué en capítulos anteriores del tutorial de WordPress desde cero, uno de los puntos fuertes de cualquier gestor de contenidos es precisamente eso, la gestión de contenido y su facilidad para insertar, modificar o eliminar contenidos de nuestro sitio web.

En el capítulo anterior veíamos cómo administrar las entradas en WordPress y en este lo haremos con las páginas.

El sistema es igual al de entradas, a diferencia de que las entradas no son jerárquicas y las páginas sí.

Diferencias entre entrada y página

Una de los problemas más conocidos para la gente que se inicia en WordPress es precisamente este, entender qué diferencia hay entre una página y una entrada.

Puede parecer básico, pero si no estás familiarizado con un gestor de contenidos (es posible que sea el caso, ya que estamos en un tutorial de WordPress desde cero), estos términos de entrada y página te sonarán a chino.

En Internet existen, generalmente, dos tipos de páginas web:

  • Por un lado tenemos las páginas estáticas, esas que no reciben actualizaciones, como bien podrían ser las tarjetas de visita o la página de contacto.
  • Por el contrario, las páginas dinámicas; son esas que sí reciben modificaciones, bien sea por medio de comentarios, cambios en el cuerpo del mensaje…

Puede que la generalización sea un poco bestia, pero sirve para el ejemplo en el que estamos metidos.

Podemos decir, a grandes rasgos, que una página en WordPress es esa que se considera “estática” o con cambios mínimos (quizá alguna corrección de ortogracía o poco más). Sin embargo, podemos considerar las entradas como el contenido dinámico de nuestro sitio web.

Por lo general, siempre escribirás más entradas que páginas y las primeras recibirán más comentarios y actualizaciones que las segundas.

¿Qué uso tienen las páginas en WordPress?

Supongo que ya hayas cogido la idea con el apartado anterior, pero si no es así me gustaría aclararte que todo lo que sea más o menos fijo, irá en una página.

Algunos ejemplos de contenidos página pueden ser:

  • Contacto. Típica página con un formulario, datos de contacto, dirección y mapa de la empresa (si lo hubiera)
  • Política de privacidad o avisos legales. Está claro que no vamos a modificar este texto con frecuencia.
  • Acerca de. Yo soy Darío y lo seré siempre; puedo aprender cosas nuevas que añadir o algunas que suprimir en la página que contiene información sobre mí, pero por lo general no será habitual.

Son sólo tres ejemplos, pero creo que es suficiente para captar la idea, ¿no?

Diferencias entre las páginas y las entradas en WordPress

Al principio de la entrada comentaba algo sobre que las entradas no son jerárquicas y las páginas sí…

En realidad hay muchas más diferencias entre las páginas y las entradas, pero podemos quedarnos con estas dos:

  • Las páginas son jerárquicas, se pueden crear subpáginas: Con las entradas no es posible crear “subentradas”, pero sí que podemos hacerlo con las páginas; esto permite organizar mejor el contenido.
  • Las páginas no tienen taxonomías. Hablando de una instalación por defecto de WordPress (por supuesto), las páginas no gestionan categorías, ni etiquetas.

Conclusión

Como ves, no explico cómo añadir una página o cómo editarla. Realmente es igual que con las entradas, si quieres saber cómo te recomiendo que visites el artículo donde explico la administración de entradas en WordPress, donde aprenderás a crear entradas, categorías y etiquetas y con poco esfuerzo páginas.

Está claro que hay muchas más diferencias entre las páginas y las entradas, pero aquí venimos a aprender a desenvolvernos con WordPress y administrar nuestro sitio web. Si encuentras alguna diferencia importante entre entradas y páginas (es posible que se me pasen por alto) te invito a que dejes un comentario con tu explicación.

Como siempre, si te ha gustado puedes compartirlo en las redes sociales o dejar un comentario.

Volver al índice del tutorial WordPress desde cero

Derechos de imagen

Muestra el nombre del fichero del theme en WordPress

Los dos últimos proyectos que he encarado han sido con plantillas de pago. Uno de ellos apenas ha llevado modificaciones, pero el otro ha sufrido un “make up” bastante intenso y a veces era complicado saber qué fichero tocar para conseguir lo que el cliente solicitaba.

Por esta razón, traigo una función que nos saca el nombre del fichero que está usando el tema en una determinada página para así saber dónde ir a modificar.

Válido para el Front-End

Yo me dedico al front-end e integración de maquetas con WordPress (entre otras muchas cosas), y para mí lo más útil era mostrarlo en el front-end.

Para ello, he creado una función que me saca el dato de una forma muy sencilla:

/**
 * Muestra el fichero actual de la plantilla
 *
 * Crea una variable local con el mismo nombre que el fichero que se está utilizando de la plantilla.
 *
 * @param $template La ruta completa a la plantilla actual
 */
function define_current_template( $template ) {
    $GLOBALS['current_theme_template'] = basename($template);
 
    return $template;
}
add_action('template_include', 'define_current_template', 1000);

Esta función nos genera una variable global (tal y como dije en la cabecera de la misma) que se llama $current_theme_template y contendrá el nombre del fichero que se está utilizando en ese momento.

Además, si le pasamos un true como parámetro a nuestra función, nos imprimirá directamente la variable, por lo que sólo tendremos que ir al header.php (o footer.php, o donde queramos) y llamarla de la siguiente manera:

<?php get_current_template(true); ?>

Conclusión

Esta función es realmente útil por lo que comentaba en líneas anteriores, nos permite saber qué fichero tenemos que modificar en relación al contenido que estamos trabajando.

Como siempre, si te resulta útil o te gusta compártela con tus amigos y dale a me gusta.

Cualquier duda o puntualización puedes agregarla en los comentarios.