Gestores de contenidos

Diseño Web, Gestores de contenidos, Trucos

Script para disparar eventos de Google Analytics al pinchar en una clase o id.

Hace unos días hablamos sobre cómo usar los Eventos (Objetivos) de Google Analytics para los formularios de contacto de Contact Form 7. Hoy os vamos a dejar una solución para las conversiones que funcionaría en cualquier otro tipo de formulario, o incluso al finchar en cualquier tipo de elemento web. Lo que vamos a hacer es dejaros un script (que hemos usado) para que el evento se dispare cuando pinchemos en una clase o id, y eso mande el código a Google Analytics. Código la pinchar en una clase o id. Primero os dejo los códigos que, como siempre, podéis poner en WordPress en un Snippet o en el functions.php de tu tema hijo. En otro tipo de página podéis ponerlo como código Javascript. Al pinchar en una clase. Al pinchar en un id. Explicación del código. Como veis el código es muy similar. Ambos son scripts que se ponen en el pie de WordPress y están escuchando a ver si el usuario hace clic en alguno de los elementos que hemos puesto. XXXX es la clase del elemento en la que queremos que “escuche”.YYYY es la id del elemento en la que queremos que “escuche”.Ambas pueden ser un botón, un enlace, un div o lo que queramos, por eso decimos que estos códigos sirven para cualquier elemento o formulario. En la parte del gtag tenéis que poner en aaaa, bbbb, cccc, dddd, (y en el valor) los elementos que hayáis puesto al crear el elemento en Google Analytics. Como antes, es fácil comprobar si funciona con el menú “Tiempo Real” de GA, haciendo pruebas y viendo la respuesta inmediatamente.Pero como os digo nosotros hemos usado estos códigos varias veces sin problemas.

Diseño Web, Gestores de contenidos, Trucos

Cómo subir a WordPress tipos de archivo no permitidos.

WordPress, por defecto, sólo permite subir cierto tipo de archivos. Si intentas subir un formato que no está dentro de la siguiente lista, da este error: Lo siento, este tipo de archivo no está permitido por motivos de seguridad. Los formatos permitidos son (más información aquí): Images .jpg .jpeg .png .gif .ico Documents .pdf (Portable Document Format; Adobe Acrobat) .doc, .docx (Microsoft Word Document) .ppt, .pptx, .pps, .ppsx (Microsoft PowerPoint Presentation) .odt (OpenDocument Text Document) .xls, .xlsx (Microsoft Excel Document) .psd (Adobe Photoshop Document) Audio .mp3 .m4a .ogg .wav Video .mp4, .m4v (MPEG-4) .mov (QuickTime) .wmv (Windows Media Video) .avi .mpg .ogv (Ogg) .3gp (3GPP) .3g2 (3GPP2) En ocasiones queremos subir algún formato que no está incluido aquí. Así que hoy os dejamos un Snippet que te permite hacerlo. Por código. Código para permitir tipos de archivo no permitidos. Explicamos el código. La línea que tenéis que modificar, y de la que podéis añadir tantas como tipos queráis añadir, es $mime_types[‘XXX’] = ‘YYY’; Los valores de XXX y YYY los podéis sacar de esta tabla o de esta web.En vez de XXX ponéis el valor de la extensión (izquierda de la tabla). En vez de YYY ponéis el valor del tipo (derecha de la tabla). Por ejemplo para permitir archivos de vídeo webm ponéis:$mime_types[‘ webm’] = ‘video/webm’; Nota: os añado algunos tipos que no vienen ahí: Por plugin. Si no queréis complicaros podéis agregar este plugin: File Upload Types by WPForms. Pero recordamos que cuantos más plugins más vectores de ataque dejamos a los “malos” y más lenta será nuestra web.

Diseño Web, Gestores de contenidos, Trucos

Conversiones (Eventos) de Google Analytics con Contact Form 7

Hace unos días hemos tenido que hacer esto para un cliente. Hay muchísima información en Internet, y mucha desactualizada, así que os dejamos la que nos sirvió a nosotros. La idea es la siguiente, se crean unos Eventos (Objetivos) en Google Analytics, para que podamos realizar seguimiento de los formularios que mandamos con Contact Form 7 en WordPress. Doy por supuesto que se sabe crear Objetivos en GA, y que se ha creado uno (o varios) de tipo Evento con la Categoría, Acción, Etiqueta y Valor necesarios. Cómo implementarlo en Contact Form 7 en WordPress. Ahora necesitamos que nuestro WordPress envíe una notificación a Google Analytics cada vez que se envíe un formulario. Para ello vamos a poner un javascript que “escuche”. ¿Escuchar a qué? Afortunadamente el creador de Contact Form 7 ha sido previsor, y ha programado unos eventos DOM que se ejecutan cuando se realizan diversas acciones. Así que vamos a escuchar al evento DOM wpcf7mailsent  que se ejecuta cuando se ha enviado un formulario correctamente. ¿Qué enviamos a Google Analytics? Hay dos maneras de hacer esto, con ga o con gtag (gtag.js). Cuidado porque la sintaxis es diferente. gtag(‘event’, eventName, {  ‘send_to’: ‘GA_MEASUREMENT_ID’,  ‘parameter1’: ‘value1’,  ‘parameter2’: ‘value2′,  // …}); Nosotros hemos optado por gtag (más nuevo) y este artículo se basa en eso. Código en WordPress. Cómo siempre hacemos últimamente, este truco se basa en un código que podemos poner o en functions.php de nuestro tema hijo o (como lo hacemos nosotros) en un Snippet. Nos gusta los Snippets porque podemos activarlos, desactivarlos, etiquetarlos, clonarlos, poner descripción…. Vamos a poner un Snippet que se ejecutará “sólo en la portada” (mala traducción de Frontend). El código es el siguiente: Explicación. Creo que se explica bastante, pero estas son las claves del código: if ( ‘XXX’ este XXX tenemos que sustituirlo por el id del formulario en cuestión). EL Id lo podemos encontrar en el shortcode que nos da CF7 gtag(‘event’, ‘evento3’, { ‘event_category’: ‘envento3’, ‘event_action’: ‘enviar’, ‘event_label’: ‘es’, ‘value’: ‘0’});Este es el evento de GA que se dispara cuando el formulario enviado tiene el ID que ponemos. Aquí tienes que poner tus valores detrás de los campos event_category, event_action, event_label y value. Con esto activado, idos a En Tiempo Real>Eventos en Google Analytics y haced una prueba de envío. Deberíais ver cómo se dispara el evento en tiempo real.

Diseño Web, Gestores de contenidos, Trucos

Eliminar opciones del menú del backend de WordPress según el rol del usuario.

Hace unos días un cliente nos pidió que sus usuarios de un rol específico sólo pudieran acceder a ciertas cosas. Es decir, o crear un nuevo rol con capacidades específicas, o limitar uno de los roles de WordPress. Esto normalmente se hace de manera sencilla con plugins que editan las “capabilities” de los roles de WordPress, como este. PERO tienen un fallo. Esos plugins restringen “capabilities” de Wordress. Hay recursos que comparten la misma. Así que a veces quieres dar acceso a una opción pero limitar otra, y no es posible porque ambas usan la misma. Una opción que soluciona esto es quitar esas opciones del menú de administrador para esos roles. Cómo eliminar opciones del menu del backend de WordPress según el rol de ususario. Para ello vamos a usar un código que, como siempre, podemos o poner en el archivo functions.php de nuestro tema hijo o en un Snippet (sólo para el backend en este caso). Es el siguiente: Las claves están en1) La línea de current_user_can( ‘editor’ ). Como véis aquí hemos puesto un rol, pero también podemos poner una capability para afectar a más de un rol. En Internet podéis ver muchos ejemplos.2) La parte de remove_menu_page( ‘urlquequierasquitar‘ ). Estas son las opciones que tenemos que eliminar. Tienes que poner entre paréntesis la url o parte de la url a la que apunte el menú que quieres quitar. Juega con las opciones hasta conseguir el resultado optimo. Por ejemplo si pasas el ratón por encima de Apariencia y copias el enlace (botón derecho, copiar dirección del enlace) es algo como tudominio/wp-admin/themes.php Si quieres eliminarlo pon en el código superior la línea:remove_menu_page( ‘themes.php’ ) . Os dejamos algún ejemplo: Como veis este código admite eliminar todas las opciones que quieras, y también, con más if, usarlo para diferentes roles. Espero que os sea útil.

Diseño Web, Gestores de contenidos

Enable Media Replace: plugin para reemplazar imágenes y archivos en los medios de WordPress.

La utilidad de este plugin sólo la verás si has gestionado una página en WordPress. En ocasiones tienes que cambiar una imagen de los medios de tu WordPress. Porque quieras poner una con mejor resolución, porque la hayas modificado o lo que sea. En estos casos, sólo tienes dos opciones. O borras la imagen y la vuelves a subir (en cuyo caso pierdes los enlaces y tienes que volver a ponerla), o entras por FTP y sustituyes la imagen en su sitio (búscala, entra por FTP etc…y no tiene mucho sentido tener un gestor para eso). Enable Media Replace arregla esto. Con este plugin puedes sustituir una imagen en tu galería de medios, sin tener que borrarla. Sólo tienes que cambiar la nueva por la vieja desde la galería.De hecho tiene dos funcionamientos, o cambias la imagen, o te deja sustituir imágenes y busca y reemplaza los vínculos de la vieja por la nueva. Otra cosa muy importante, no es sólo para imágenes. También para cualquier fichero de la galería de medios, pdf incluidos. Así que si tienes que cambiar o modificar documentos, ya no tienes que borrarlos. Buen plugin.

Diseño Web, Gestores de contenidos, Trucos

Quitar columnas extra en productos de WooCommerce con Yoast SEO plugin

Cuando tienes una página con WooCommerce, y añades el plugin más conocido de SEO, el Yoast SEO, lo más seguro es que veas que tu backend de productos se descoloque. Se ven nombres a los lados y cada fila es mucho más alta que antes.. Lo que está pasando es que Yoast SEO añade unas columnas a un, ya por sí lleno, listado de productos. Y como no cabe bien se descoloca. Cuando queremos solucionarlo, siempre pensamos en cosas complejas como Snippets, funciones o trucos CSS. Pero es mucho más sencillo. Aquí os dejamos cómo solucionarlo.

Diseño Web, Gestores de contenidos, Trucos

Ocultar contenido por CSS según el idioma de WPML

Las webs multilingües son muy habituales hoy en día y, para nosotros, el mejor plugin para ello es WPML. Es de pago, si, pero no es excesivo y el plugin es potentísimo. Una de las cuestiones que nos salió hace poco con una web de este estilo, con varios idiomas, era cómo ocultar contenido para ciertos de ellos. Es decir, mostrar algo para unos idiomas y ocultarlo para otros. WPML permite definir widgets según idioma, pero hay ciertos componentes que o no son compatibles, o no se puede hacer ese cambio. Así que la opción es o quitarlo por Snippet, o quitarlo por CSS. Hoy os enseñaremos a hacerlo de las dos maneras Ocultar contenido con un Snippet. Podemos añadir el siguiente código en functions.php del tema hijo o en un Snippet para mostrar el código según el idioma. Ocultar contenido por CSS según el idioma. Para ello vamos a usar el siguiente código: html[lang=”código idioma”] claseoid {display:none;}Por ejemplo html[lang=”en-US”] #Footer .widgets_wrapper {display:none;}

Diseño Web, Gestores de contenidos, Seguridad

Firewall para .htaccess de Apache nG y firewall para WordPress BBQ: Block Bad Queries

Muchos de los ataques a páginas web son por scripts o robots que primero “inspeccionan” la web para ver sus vulnerabilidades. Preguntan cosas como la versión del gestor de contenidos, versión de php etc. Están buscando agujeros de seguridad, y ocurre constántemente. Por esto nos gusta este firewall que hemos encontrado para .htacess (Apache). El creador ha recopilado una serie de peticiones o queries que son maliciosas y con contenido potencialmente dañino (como  eval(, base64_ ..), y ha creado una lista para que podamos bloquearlas. Lo interesante es que este bloqueo se realiza a nivel de servidor, antes del acceso a la página. Así que, al bloquear estos intentos de acceso, también mejora el rendimiento de la misma. nG Firewall, como decimos, es una lista de queries maliciosas que, en el momento de escribir el artículo está en su versión 6G. La manera de implementarlo en cualquier web es sencillo, añade la lista de exclusiones que da a tu fichero .htaccess. El Apache, al leerlas, se encargará de bloquear estos accesos indebidos.La lista está dividida en secciones, y puedes añadir todas, o sólo alguna de las secciones (son independientes). Aunque están muy probadas, mira el artículo de tu nG antes sobre las notas de implementación y su sección de troubleshooting. # 6G:[QUERY STRING] # 6G:[REQUEST METHOD]# 6G:[REFERRER] # 6G:[REQUEST STRING] # 6G:[USER AGENT] # 6G:[IP ADDRESS] Firewall ligero para WordPress: BBQ: Block Bad Queries Si tienes WordPress, es más fácil implementar este firewall. Puede servir tanto como capa añadida de seguridad a lo que tengas de firewall, o como solución ligera y sencilla para aquellos a los que el alojamiento o los conocimientos no les deje usar soluciones más complejas. BBQ: Block Bad Queries implementa el firewall nG, con añadidos que te permite gestionarlo de modo gráfico. Un plugin muy interesante a tener muy en cuenta.

Diseño Web, Gestores de contenidos, Trucos

Cómo enlazar un producto de WooCommerce a otra página de tu web o externa.

Nos han pedido recientemente, que el enlace de algunos de los productos de su tienda WooCommerce, vaya directamente a una página externa.WooCoomerce tiene algo parecido, los productos externos o de afiliados, pero para ir al enlace tienes que entrar en el producto. La idea es que al pinchar en la imagen de cualquier página donde esté listado el producto, esta te lleve al enlace externo. Cómo enlazar productos de WooCommerce con páginas externas. El proceso consta de dos pasos. Lo primero es que, en nuestra solución (mencionaremos otras) creemos los productos como externos con la opción de producto de WooCommerce y pongamos ahí la url.Nos ha parecido más sencillo y cómodo para los usuarios así. La segunda es crear un Snippet (como siempre puedes editar functions.php de tu tema hijo también) que detecte si son productos externos y cambie la url por la personalizada. Os dejamos este posible código: add_filter( ‘woocommerce_loop_product_link’, ‘cambiar_permalink_prod_externo’, 99, 2 ); function cambiar_permalink_prod_externo ( $link, $product ) {$this_product_id = $product->get_id();if ($product->is_type( ‘external’ ))$link = $product->add_to_cart_url();return $link;} Este Snippet podemos modificarlo de muchas maneras: Cambiar el enlace sólo para unos artículos (ponemos como ejemplo un enlace interno): if( $this_product_id=== 25 ) $link= ‘/enlaceinterno’;return$link; Poniendo un campo personalizado en el producto, por ejemplo con ACF, y su valor como URL. Espero que os sirva. Mejora 2021. Un cliente nos pidió que los enlaces externos se abrieran en una nueva pestaña. Aquí tenéis la modificación.

Diseño Web, Gestores de contenidos, Seguridad

Proteger la carpeta de administrador de Prestashop con una contraseña adicional por .htaccess y .htpasswd

Prestashop tiene unas medidas básicas de seguridad, como ponerle un nombre aleatorio a la carpeta de administrador (adminXXXX). Pero si quieres asegurar algo más tu tienda, puedes añadir otra capa de seguridad: una contraseña adicional.Con el método de este artículo, cuando un usuario intente entrar en la dirección https.//tudominio.com/adminXXX el navegador mostrará una ventana emergente pidiendo un usuario y contraseña que es independiente de la web, se configura en el servidor. Así que, aunque te hayan descubierto los datos de usuario y contraseña de la web (de alguna otra manera), no podrían entrar en tu backend. Cómo proteger la carpeta de administrador. El proceso es el siguiente: Creamos un fichero llamado .htpasswd en algún lugar de nuestro servidor (fuera de las carpetas de la web es mejor, para que no puedan descubrirlo hackeando la web. El contenido está encriptado, lo podemos crear con una web como esta (o esta). Sólo copiamos el contenido que nos da al final, tras poner el usuario, la contraseña y dar a Create .htpasswd file. Una vez generado el fichero, vamos a la carpeta de administrador del Prestashop y creamos un fichero llamado .htaccess con el siguiente contenido.AuthType Basic AuthName “Acceso restringido con contraseña” AuthUserFile /home/user/.htpasswds/public_html/wp-admin/.htpasswd require valid-user AuthUserFile tiene la ruta del fichero .htpasswd Es importante que el usuario web tiene que poder leer el fichero htpasswd. Comprueba los permisos de htacess y htpassd si tienes errores. Ahora cuando intentes entrar te pedirá una contraseña previa. Buen método para mejorar la seguridad de tu Prestashop. Cuando hagas esto puede dejar de funcionar alguna función de tu web dependiendo de si esta requiere un fichero en ese directorio (no debiera pero cada web es diferente). Si es así, sólo hay que excluirlo. También por .htaccess podemos limitar el acceso sólo a una IP (o denegar otras). Por ejemplo: order deny,allow allow from XXX.XXX.XXX.XXX (tu ip) deny from all

Scroll al inicio