Así es como puede encontrar todos los usuarios que tienen un determinado valor de metadatos para una meta_clave específica.
Primero establezca una matriz de argumentos con la meta_clave, el valor y el operador específicos.
En mi caso, quería que todos los usuarios tuvieran un número de miembro igual a ‘xxxxxxx’. Meta_key es ‘member_number’ y meta_value es ‘xxxxxxx’. Si ambos valores son verdaderos para un usuario, quiero que se devuelva el objeto de usuario.
El resultado de esto será una lista de ID de usuario para los usuarios que tienen un meta_valor de ‘xxxxxxx’ para la meta_clave ‘member_number’. Este código puede ir a cualquier lugar donde se permita php en WordPress.
Grabar un Custom Post Type desde el frontend de WordPress facilita a los usuarios de tu web el introducir información en el sitio sin tener que acceder al escritorio de WordPress.
En el artículo Cómo crear tipos y campos personalizados en WordPress veías que sencillo es crear un Custom Post Type desde un plugin. Con ese sistema los usuarios pueden acceder al escritorio de WordPress y crear nuevos ítems utilizando ese CPT.
El problema se plantea si no quieres que los usuarios accedan al escritorio para crear estos contenidos, la solución es un formulario que puedes crear y procesar de una manera relativamente simple. En este artículo verás como puedes hacerlo sin utilizar plugin de terceros.
Los elementos más importantes son los siguientes:
Crear el formulario con un shortcode para mostrarlo en una página, una entrada o un widget.
El formulario llama desde el «action» a admin-post.php
Registrar los hooks admin_post{$action} y admin_post_nopriv{$action} para poder grabar desde usuarios autenticados y no autenticados
En la función asociada a estos hooks preparar el array con la información del CPT que viene del formulario y grabar con la función wp_insert_post($args)
Y en los detalles está el diablo:
Redirigir de nuevo a la URL actual después de grabar para mostrar algún feedback al usuario
Prefijar todos los campos del formulario para evitar conflictos
Filtrar bien las entradas y utilizar un campo nonce para evitar problemas de seguridad.
Para este ejemplo vas a crear un Custom Post Type de manera que los lectores de un blog puedan proponer ideas para la creación de nuevos artículos o los usuarios de una aplicación puedan proponer características que les gustaría ver implementadas. La gracia es que estas ideas puedan ser propuestas directamente desde un formulario y se pueden dar por publicadas directamente o dejarlas como borradores. En una segunda versión de este plugin los usuarios podrán votar cada idea para que se escriba o implemente primero la que obtenga más votos.
En el artículo cómo programar un formulario sin plugins explico las bases para crear un plugin de una manera detallada, así que aquí voy al grano. Lo haré todo en un sólo fichero para que tengas una mejor visión de conjunto , estas serían las primeras líneas del plugin donde hago las llamadas a los hooks para:
Crear el Custom Post Type
Agregar el shortcode que permite mostrar el formulario en una página o entrada.
Definir la función que procesará el formulario cuando se pulsa el botón de Enviar
<?php
/**
* Plugin Name: KFP Grabar CPT Frontend
* Description: Plugin de ejemplo para el artículo "Grabar Custom Post Type desde el frontend de WordPress". Utiliza el shortcode [kfp_gcf_form_idea]
* Author: KungFuPress
* Author URI: https://kungfupress.com
* Version: 0.1
*/
// Evita que se llame directamente a este fichero sin pasar por WordPress
defined( 'ABSPATH' ) or die();
// Crea el CPT al activar el plugin
add_action('init', 'kfp_cpt_idea', 10);
// Crea el shortcode para mostrar el formulario de propuesta de ideas
add_shortcode('kfp_gcf_form_idea', 'Kfp_Gcf_Form_idea');
// Agrega los action hooks para grabar el formulario (el primero para usuarios
// logeados y el otro para el resto)
// Lo que viene tras admin_post_ y admin_post_nopriv_ tiene que coincidir con
// el value del campo input con name "action" del formulario
add_action("admin_post_kfp-gcf-grabar-idea", "Kfp_Gcf_Grabar_idea");
add_action("admin_post_nopriv_kfp-gcf-grabar-idea", "Kfp_Gcf_Grabar_idea");
A continuación tienes la función que crea el CPT, he reducido la configuración a la mínima expresión, si necesitas algo más elaborado puedes consultar la documentación oficial o utilizar Post Type Generator para que te lo haga a medida
/**
* Crea el CPT Idea con lo mínimo que se despacha en CPT
*
* @return void
*/
function kfp_cpt_idea()
{
$args = array(
'public' => true,
'label' => 'Ideas'
);
register_post_type('idea', $args);
}
Sigue con la función que pintará el formulario de entrada allá donde pongas el shortcode [kfp_gcf_form_idea].
Fíjate en la URL del action del formulario, que llama a admin_post.php y en el input oculto con nombre action y valor kfp-gcf-grabar-idea que será el que activará el hook correspondiente admin_post_kfp-gcf-grabar-idea o admin_post_nopriv_kfp-gcf-grabar-idea. También he puesto un campo oculto que almacena la URL actual para que al procesar el formulario vuelva de nuevo a la misma página o entrada.
/**
* Muestra el formulario para proponer ideas desde el frontend
*
* @return void
*/
function Kfp_Gcf_Form_idea()
{
if (isset($_GET['kfp_gcf_texto_aviso'])) {
echo "<h4>" . $_GET['kfp_gcf_texto_aviso'] . "</h4>";
}
ob_start();
?>
<form name="idea"action="<?php echo esc_url(admin_url('admin-post.php')); ?>"
method="post" id="kfp-gcf-form-grabar-idea">
<?php wp_nonce_field('kfp-gcf-form', 'kfp-gcf-form-nonce'); ?>
<input type="hidden" name="action" value="kfp-gcf-grabar-idea">
<input type="hidden" name="kfp-url-origen"
value="<?php echo home_url( add_query_arg(array())); ?>"
<p>
<label for="kfp-gcf-title">Idea</label>
<input type="text" name="kfp-gcf-title" id="kfp-gcf-title"
placeholder="Pon un título breve pero descriptivo a tu idea">
</p>
<p>
<label for="kfp-gcf-content">Descripción</label>
<textarea name="kfp-gcf-content" id="kfp-gcf-content"
placeholder="Aquí puedes explicar mejor tu idea"></textarea>
</p>
<p>
<input type="submit" name="kfp-gcf-submit" value="Enviar idea">
</p>
</form>
<?php
return
El formulario podría quedar más o menos así en tu web:
Y por último la función que graba la nueva «idea» con los contenidos del formulario. Es un poco larga porque los avisos quedan muy aparatosos, pero lo más importante aquí es asignar los valores a los campos del CPT y luego grabarlos con la función wp_insert_post()
/**
* Procesa el formulario para proponer ideas desde el frontend
*
* @return void
*/
function Kfp_Gcf_Grabar_idea()
{
if (filter_has_var(INPUT_POST, 'kfp-url-origen')) {
$url_origen = filter_input(INPUT_POST, 'kfp-url-origen', FILTER_SANITIZE_URL);
}
if(empty($_POST['kfp-gcf-title']) || empty($_POST['kfp-gcf-content'])
|| !wp_verify_nonce($_POST['kfp-gcf-form-nonce'], 'kfp-gcf-form')) {
$aviso = "error";
$texto_aviso = "Por favor, rellena los contenidos requeridos del formulario";
wp_redirect(
esc_url_raw(
add_query_arg(
array(
'kfp_gcf_aviso' => $aviso,
'kfp_gcf_texto_aviso' => $texto_aviso,
),
$url_origen
)
)
);
exit();
}
$args = array(
'post_title' => filter_input(INPUT_POST, 'kfp-gcf-title', FILTER_SANITIZE_STRING),
'post_content' => filter_input(INPUT_POST, 'kfp-gcf-content', FILTER_SANITIZE_STRING),
'post_type' => 'idea',
'post_status' => 'draft',
'comment_status' => 'closed',
'ping_status' => 'closed'
);
// Esta variable $post_id contiene el ID del nuevo registro
// Vendría de perlas para grabar los metadatos
$post_id = wp_insert_post($args);
$aviso = "success";
$texto_aviso = "Has registrado tu idea correctamente. ¡Gracias!";
wp_redirect(
esc_url_raw(
add_query_arg(
array(
'kfp_gcf_aviso' => $aviso,
'kfp_gcf_texto_aviso' => $texto_aviso,
),
$url_origen
)
)
);
exit();
}
Bueno, espero que no te hayas perdido por el camino, los tres pasos fundamentales para grabar un Custom Post Type desde el frontend han sido:
Crear el CPT al activar el plugin
Pintar el formulario cuando utilices el shortcode
Grabar la nueva «idea» en la base de datos de WordPress
Coméntame que te ha parecido este artículo y si le ves utilidad en alguno de tus desarrollos. Si te gusta la «idea» en posteriores artículos puedo desarrollarla un poco más:
Grabando metadatos del CPT
Permitir la escritura sólo a usuarios autenticados, por ejemplo para un membership.
Desarrollando el sistema que permite votar las ideas de otros usuarios.
En cualquier caso espero tener pronto el desarrollo completo de este tema en el curso de desarrollo de plugins que estoy preparando. Puedes suscribirte a la lista de correos para estar al tanto de las novedades.
Las entradas de WordPress son el elemento de información más básico de este CMS. Para entendernos, una entrada es la pieza de contenido más básica que puedes generar en tu web, una entrada puede darse a conocer como un post, un artículo, es la forma más fácil para añadir contenidos para un proyecto online.
Como crear una entrada:
En la pagina principal se ve un menú en el lado izquierdo de nuestra pantalla
Se visualiza el menú de entradas, la primera opción que encontramos es Todas las entradas. En ella, encontrarás todas las publicaciones realizadas, ordenadas por fecha, de la más reciente a la más antigua. A su vez, este panel de todas las entradas te da la posibilidad de editar o eliminar aquellas entradas que ya hayas publicado.
La opción de Añadir entrada, presente tanto en el menú de navegación izquierdo como en la parte superior del panel de Todas las entradas te permite añadir una nueva entrada. Al hacer click sobre dicho botón, se carga una página de edición de entradas en blanco para que puedas agregar nuevos contenidos.
La siguiente opción del menú izquierdo de navegación son las Categorías. En el panel de Categorías puedes establecer las que podríamos denominar las secciones en las que se divide tu contenido. En este punto es importante que pienses en cómo divide su contenido un periódico o revista digital. Utilizan una serie de secciones para categorizarlo.
La opción ‘Categorías’ te permite establecer las secciones en las que se dividen tus contenidos.
Pues bien, las categorías te permiten hacer esto mismo. Si te fijas, en mi blog hay cinco categorías principales: Marketing Online, WordPress, WooCommerce, Herramientas y Tutoriales. Cada una de estas categorías gira sobre una temática concreta. Independientemente del aspecto del marketing online que trate, todo lo relacionado con esta disciplina se agrupa bajo la misma categoría.
Por lo tanto, las categorías de tu blog deberían ser algo que pienses con antelación a la creación del contenido. Del mismo modo, se deberían mantener estables a lo largo del tiempo. Es decir, no deberías añadir categorías a lo loco. Ya que, si no, los usuarios no tendrán claro las temáticas sobre las que estás hablando en tu blog.
Por último, las Etiquetas. Este segundo sistema de filtrado de contenidos te permite agrupar tus entradas. ¿Cómo? Por temas o topics que tienen relación entre sí. Por ejemplo, dentro de mi categoría de Marketing Online, puedo tener posts que hablen de email marketing o posicionamiento SEO… Cada uno de estos temas pueden ser una etiqueta por sí misma.
Medios en WordPress
En WordPress se entiende por elemento multimedia, que se almacena en la biblioteca de medios, cualquier archivo que se carga en la web o que se puede descargar desde un enlace.
En la mayoría de los casos estos medios se refieren a las imágenes que se cargarán en páginas, entradas, plugins y widgets.
Además de las imágenes, podremos tener otros elementos multimedia que se muestren en la web como vídeos o archivos de audio.
También podremos tener otros medios no visibles de forma directa en la web, pero que se podrán descargar o abrir desde un enlace, como un archivo pdf, un zip o un documento de Word.
Gestionar la biblioteca de medios de WordPress
Todos estos elementos se pueden gestionar desde la biblioteca de medios de WordPress. Para acceder a ella hay que ir en la administración de WordPress a Medios > Biblioteca.
Nos encontraremos una página donde se mostrarán todos los elementos multimedia que hayamos agregado en nuestro WordPress hasta ese momento: imágenes, vídeos, archivos de audio, otros archivos, etc.
Para las imágenes veremos una vista en miniatura, mientras que para el resto de elementos simplemente se mostrará un icono relacionado con el tipo de archivo.
Visualizamos en la parte superior de la biblioteca de medios veremos una barra con la que podremos aplicar varios filtros a los elementos que aquí se muestran.
Aqui veremos información adicional para cada medio añadido, como el usuario que lo ha subido, el elemento de la web (página, entrada, widget, etc.) con el que está asociado, si es que tiene alguno, los comentarios asociados y la fecha en la que se subió.
En la columna Subido a, que indica el elemento de la web donde se ha añadido el elemento multimedia, veremos también enlaces para adjuntar el elemento o separarlo, aunque normalmente esto no es necesario hacerlo, ya que se realiza de forma automática. Por ejemplo, cuando asociamos una imagen a una entrada.
Colocando el cursor de ratón sobre cualquier elemento veremos que se muestran enlaces con los que podremos editarlo, borrarlo permanentemente o ver una vista previa.
Continuando con el repaso de la barra superior de filtros, pulsando sobre el segundo icono volveremos a la vista de cuadrícula.
A su derecha veremos una lista desplegable donde podremos filtrar por el tipo de elemento multimedia u otras propiedades: imágenes, audio, vídeo, elementos sin adjuntar o elementos subidos por el usuario con el que estemos conectados.
A continuación, veremos un nuevo listado con el que podremos filtrar los elementos que se muestran por mes y año de subida.
Con el botón Selección múltiple se entrará en un modo de edición con el que podremos seleccionar varios elementos para su borrado.
Para ello, una vez pulsado el botón anterior simplemente tendremos que pulsar sobre los elementos a borrar y, una vez hecho, pulsar en el botón Borrar permanentemente.
Por último, dispondremos de un buscador donde podremos localizar los elementos multimedia por su título.
Editar elementos multimedia en WordPress
Para editar un elemento multimedia simplemente tendremos que pulsar sobre él, si estamos en la vista de cuadrícula, o en el enlace Editar, si estamos en la vista de lista.
Dependiendo del tipo de medio editado, los parámetros a configurar pueden variar.
Editar imágenes
Cuando editamos una imagen nos encontraremos con una página donde veremos una vista previa de la misma y varios parámetros a configurar.
Vamos a repasar estos parámetros que se muestran en la parte derecha.
Texto alternativo: se corresponde con la etiqueta alt de la imagen, y sería el texto que se muestra cuando colocamos el cursor del ratón sobre una imagen. Es importarte añadir este dato, ya que se tendrá en cuenta para temas de SEO (posicionamiento de la web en buscadores).
Título: por defecto mostrará el nombre que tenía la imagen subida. Se puede cambiar, aunque no se usará en la carga de la imagen.
Leyenda: este texto se mostrará en el pie de la imagen cuando la añadamos en una página o entrada.
Descripción: un texto donde podemos añadir información sobre la imagen. En ocasiones viene cargado con el propio archivo. Se puede dejar vacío, ya que tampoco se usa al mostrarla en WordPress.
Tanto el valor del texto alternativo como la leyenda los podremos cambiar en el momento de añadir la imagen en una página o entrada, como revisaremos más adelante.
Debajo veremos el usuario que ha subido la imagen y el enlace con el que cargaría la misma, por si queremos usarlo para añadirla de forma manual.
Por último, tenemos 3 enlaces:
Ver página de adjuntos: muestra la vista de la página que se carga cuando enlazamos una imagen con su elemento multimedia.
Editar más detalles: carga una vista parecida a la vemos en esta página, aunque mostrando algo más de información, como el formato de la imagen, el espacio en disco que ocupa y sus dimensiones.
Borrar permanentemente: elimina la imagen.
Debajo de la imagen veremos un botón Editar imagen con el que podremos cambiar su aspecto.
En la nueva página que se carga dispondremos de un editor básico con el que podremos aplicar cambios en el diseño de la imagen.
En la parte superior izquierda veremos una serie de iconos. De izquierda a derecha realizan las siguientes acciones:
Recorta la imagen. Pulsando sobre él la imagen entrará en modo de recorte, donde podremos seleccionar la parte de la imagen que queremos mantener. Pulsando una segunda vez se produce el recortado dejando la imagen resultante.
Rota la imagen 90º a la izquierda.
Rota la imagen 90º a la derecha.
Voltea la imagen verticalmente.
Voltea la imagen horizontalmente, es decir, realiza un efecto espejo.
En la parte derecha veremos varias opciones más de transformación de la imagen.
Por una parte podremos escalar la imagen para reducir o aumentar su tamaño (normalmente lo primero).
Modificando uno de los valores, ancho o alto, veremos que el otro valor se ajusta de forma automática para mantener la relación de aspecto. Finalmente se pulsa en el botón Escala para aplicar los cambios.
En el apartado Recortar imagen dispondremos de más opciones para recortar la imagen a nuestro gusto.
Por una parte podremos elegir la relación de aspecto que tendrá el área de recorte. Por ejemplo, si ponemos una relación 1:1 el área de recorte será cuadrada.
Para recortar simplemente tendremos que pulsar sobre la imagen, y sin soltar el botón de ratón, arrastrar el cursor para marcar el área a recortar.
En los campos Selección veremos el ancho y alto de la nueva imagen resultante.
Por último, tenemos varios selectores donde podremos elegir para que imágenes queremos aplicar los cambios: todos los tamaños, solo la miniatura, o todas las imágenes excepto la miniatura.
Recuerda que cuando se sube una imagen en WordPress se generan varias versiones de la misma en diversos tamaños, que serán utilizadas en función de dónde se carguen.
Para tener más información sobre esto te recomiendo revisar nuestro tutorial sobre los ajustes de medios de WordPress.
Una vez que hayamos acabado de aplicar los cambios en la imagen tendremos que pulsar en el botón Guardar, o en el botón Cancelar si queremos dejar la imagen como estaba.
Insertar contenidos multimedia en páginas y entradas de WordPress
Una vez que hemos repasado cómo subir y gestionar los medios en WordPress vamos a ver cómo podemos incluir estos contenidos dentro de las páginas y entradas de WordPress.
Para ello utilizaremos el editor Gutenberg que incluye WordPress para la edición de los artículos. Si no estás familiarizado con su uso te recomiendo revisar nuestro tutorial sobre el manejo del editor Gutenberg.
Para cada tipo de elemento multimedia dispondremos de un bloque para su inserción en el contenido: Imagen, Audio, Vídeo y Archivo. Todos ellos se encuentran en el grupo Bloques comunes.
Insertar imágenes
Una vez añadido el bloque Imagen al contenido se mostrará una caja donde podremos seleccionar la imagen de la biblioteca de medios, subir la nueva imagen en ese momento o insertar a través de una url externa.
Como puedes ver, tanto para las imágenes como para otros archivos multimedia disponemos de la opción de realizar la subida en el momento en el que los vayamos a utilizar. Este uso es muy habitual.
Una vez seleccionada o subida la imagen podremos configurar la forma en la que se mostrará.
Aunque hemos visto como trabajar con distintos tipos de archivos multimedia en WordPress en la mayor parte de las ocasiones trabajaremos únicamente con imágenes.
Antes de empezar a subir imágenes es conveniente que tengamos una configuración correcta de los medios. Te recomiendo revisar el tutorial sobre los ajustes de Medios de nuestro blog donde se explica esto.
También es muy importante que las imágenes que subamos tengan el tamaño y la calidad adecuadas.
Por ejemplo, si vas a subir una imagen que se va a mostrar con un ancho máximo de 1000 píxeles, ese deberá ser el ancho máximo de la imagen original. Para imágenes que se muestran ocupando el 100% del ancho de la ventana del navegador no conviene pasarse con su tamaño, que no debería superar los 2000 píxeles, para evitar que ocupe demasiado espacio.
Puedes cambiar el tamaño de la imagen a subir con cualquier editor o herramienta online, o incluso con el editor de imágenes de WordPress que hemos visto antes.
Respecto a la calidad, este también será un aspecto que deberemos tener en cuenta a la hora de subir las imágenes.
Cuanta más calidad tenga una imagen más espacio en disco ocupará y, con ello, más tiempo tardará en cargar, lo que puede ser perjudicial tanto a nivel de experiencia de usuario como de SEO.
En muchos casos, una calidad excesiva no es apreciable a simple vista respecto a calidades inferiores, por lo que no tiene sentido usar calidades muy altas a menos que tengamos una página específica, como una empresa de servicios fotográficos.
Si estás personalizando una tienda online para un cliente o para ti mismo, puede ser más que interesante, a veces necesario, que cambies los nombres de algunos menús que, por defecto, pueden no ser todo lo intuitivos que debieran.
En el siguiente ejemplo encontrarás el modo de cambiar el menú de administración principal de WooCommerce, donde están todos los ajustes, y el de Productos. Simplemente personaliza el código según tus necesidades y lo añades a tu plugin de utilidades o al archivo functions.php del tema activo en la tienda online:
//Cambio de menús admin de WooCommerce
add_action( 'admin_menu', 'ayudawp_renombra_menu_woo', 999 );
function ayudawp_renombra_menu_woo()
{
global $menu;
$woo = the_array_search( 'WooCommerce', $menu );
$products = the_array_search( 'Productos', $menu );
if( !$woo )
return;
$menu[$woo][0] = 'Configuración de la tienda'; //Sustitución para Woocommerce
$menu[$products][0] = 'Artículos'; //Sustitución para Productos
}
function the_array_search( $find, $items )
{
foreach( $items as $key => $value )
{
$current_key = $key;
if(
$find === $value
OR (
is_array( $value )
&& the_array_search( $find, $value ) !== false
)
)
{
return $current_key;
}
}
return false;
}
Si nuestro plugin va a contener varios archivos, lo ideal es crear una estructura de carpetas siguiendo las buenas prácticas de la documentación de desarrolladores de WordPress (no es obligatorio, pero si aconsejable, ayuda mucho para el trabajo en equipo).
‘nombre-plugin.php’: Es el archivo principal del plugin. Contiene una cabecera estándar con los datos mínimos que WordPress necesita para realizar la instalación del plugin. Además, se definen las constantes y se realizan acciones iniciales.
‘uninstall.php’: Es el fichero que define los métodos y acciones de limpieza para una correcta desinstalación del plugin.
‘index.php’: Es un fichero PHP vacío con el único propósito de ocultar la estructura de carpetas. Si un usuario entra en la ruta de la carpeta del plugin se encontrará una página en blanco. Si se elimina aparecerá la estructura de carpetas.
‘readme.txt’: Es un fichero con un formato concreto que se requiere solo si el plugin se va a subir al repositorio oficial de WordPress.
‘admin’: Directorio que contiene subdirectorios con los archivos *.php, *.css, *.js, *.html que se encargan del back-end del plugin.
Directorio ‘languages’: Directorio que contiene los archivos de internacionalización y localización del plugin.
Directorio ‘includes’: Los archivos *.php auxiliares que “incluyas” desde la sentencia include de PHP a tu complemento.
Directorio ‘public’: Directorio que contiene subdirectorios con los archivos *.php, *.css, *.js, *.html que se encargan del front-end del plugin.
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.
Bien usados, los shortcodes pueden ser grandes aliados para ahorrar tiempo y código en nuestros proyectos.
En la píldora anterior veíamos cómo crear un shortcode y como introducirlo en páginas y posts usando el editor WYSIWYG de WordPress. Pero qué ocurre si necesitamos ejecutar un shortcode en alguna parte concreta de nuestro theme, por ejemplo en el footer, o en una front-page que hemos creado de forma manual.
Pues es tan sencillo como añadir esta línea de código dónde necesites ejecutar el shortcode:
echo do_shortcode( ' [nombre_shortcode] ' );
Esto también es muy útil cuando tenemos que añadir funcionalidad de otros plugins para WordPress que nos permiten usar shortcodes para añadir el contenido. Es muy habitual el uso de esta técnica para añadir formularios de contacto creados por plugin como Ninja Forms o Contact Form 7, en los cuales añadimos los formularios que hemos creado previamente usando shortcodes, por ejemplo:
Un shortcode es una herramienta que nos permite añadir funcionalidad al editor de publicación WYSIWYG (What you see is what you get) de WordPress.
Digamos que es un alias o un atajo de texto que permite lanzar cierta funcionalidad cuando sea ejecutado por WordPress, y generalmente se representa con el nombre del shortcode entre corchetes. Por ejemplo así: [nombre_shortcode].
Así, cuando nosotros escribimos en el editor de texto un shortcode, se ejecutará lo que hayamos definido para ese elemento.
Usos de un shortcode
El principal uso de un shortcode es el de agilizar la tarea de creación de contenidos muy repetitivos en un sitio. Por ejemplo, imagina que tienes un blog y todas las entradas las acabas con el mismo párrafo de despedida. En ese caso quizá una buena idea crear un shortcode. Pero no solo por no tener que escribir siempre el mismo párrafo: sobretodo por si algún día lo quieres modificar. Si has creado un shortcode, ese texto se actualizará automáticamente en todos los posts donde haya sido representado.
¿Empiezas a ver ya el poder de todo esto? Pues venga, vamos a crear un shortcode para WordPress:
Cómo crear un shortcode
Vamos a crear un shortcode de ejemplo donde agradecemos a nuestro usuario que haya leído nuestro artículo y le informamos que puede escuchar nuestro podcast, por ejemplo:
function shortcode_despedida() {
return '<p>Gracias por haber leído la píldora de hoy, y recuerda que puedes escucharme en el podcast de <strong>Product Designer</strong>, donde hablamos de diseño, desarrollo y marketing.</p>';
}
add_shortcode('despedida', 'shortcode_despedida');
Esta función que acabamos de crear puedes añadirla en el archivo functions.php de tu tema, o mejor aún, en un plugin externo donde desarrollar toda la funcionalidad de tu sitio.
Para aplicar el shortcode, tan solo tenemos que escribir el nombre del mismo entre corchetes en el editor de textos de WordPress, ya sea para un post, o en una página. En nuestro ejemplo escribiremos [despedida] en el editor. Y aparecerá esto en todos los sitios donde hayamos escrito ese shortcode:
Problemas de los shortcode
Cuando utilizamos un shortcode, estamos añadiendo contenido en nuestro sitio que será interpretado y ejecutado si la función para ese shortcode existe. Pero si nuestro usuario o nosotros mismo cambiamos de theme, y el shortcode está definido en el propio theme tendremos un problema en el contenido del sitio. Ya que todos esos shortcodes que hacían cosas chulas y útiles, de repente se transforman en un texto del tipo: [boton_principal] así, tal cual, arruinando el aspecto y el contenido del sitio web.
Por eso te recomiendo que si usas temas comprados en sitios como Themeforest y compañía: no uses sus shortcodes, ya que cuando cambies de tema, tendrás un problema.
En este post mostramos cómo puede crear un archivo .pot para su tema con Poedit
La mejor práctica es guardar archivos de idioma en una carpeta llamada "idiomas" en su directorio de temas. Si aún no lo ha hecho, créelo antes de comenzar.
En Poedit:
En el menú "Archivo", seleccione "Nuevo"
Seleccione el idioma que utilizó en su tema (probablemente inglés)
En el menú "Catálogo", seleccione "Propiedades"
Ingrese la información del proyecto en la pestaña "Propiedades de traducción"
Vaya a la tercera pestaña "Palabras clave de fuentes"
Haga clic en el botón "Nuevo elemento" (segundo botón) e ingrese una palabra clave y repita esto para cada una de sus palabras clave (__, _e, esc_attr_e, etc.)
Haga clic en el botón "Aceptar" en la parte inferior
En el menú "Archivo", seleccione "Guardar como ..."
Guarde el archivo como "yourthemename.pot" en la carpeta "languages" en su directorio de temas (asegúrese de agregar la extensión .pot al nombre del archivo porque de manera predeterminada se guardará como .po)
En el menú "Catálogo", seleccione "Propiedades" nuevamente
Vaya a la segunda pestaña "Rutas de origen"
Establezca el valor de "Ruta de base" en ../ (el archivo .pot se guarda en un subdirectorio, de esta forma configura la base en el directorio principal, es decir, el directorio de su tema)
Junto a "Ruta", haga clic en el botón "Nuevo elemento" e ingrese. (esto hará que escanee su directorio de temas y sus subdirectorios)
Haga clic en el botón "Aceptar" en la parte inferior
En la ventana del proyecto, haga clic en "Actualizar" (segundo icono en la parte superior)
En el menú "Archivo", haga clic en "Guardar"
Y tu estas listo :) ahora tienes un archivo de plantilla para las traducciones de tu theme o plugin
__() = Return the translated string _e() = echo the translated string esc_html__() = Escapes & return the translation string use in HTML output esc_html_e() = Escapes & echo the translation string use in HTML output esc_attr__() = Escapes & return the translation string use in an attribute esc_attr_e() = Escapes & echo the translation string use in an attribute
_n() = Retrieve the plural or single form based on the amount.
_x() = Retrieve translated string with gettext context _ex() = echo translated string with gettext context esc_attr_x() = Escapes & return translated string with gettext context use in an attribute esc_html_x() = Escapes & return translated string with gettext context use in HTML output