Quantcast
Channel: Programación en WordPress – Ayuda WordPress
Viewing all 326 articles
Browse latest View live

Cómo mostrar las entradas programadas antes de que se publiquen

$
0
0

Si tienes un público fiel en tu blog, un modo más para que los fidelices puede ser que muestres en alguna parte de tu sitio una lista de las próximas entradas programadas, antes de su publicación.

Hacerlo es muy fácil, y hay varias maneras de conseguirlo.

Mostrar las entradas programadas desde la plantilla

Si eres de los que prefieres editar tu tema, puedes añadir el siguiente código donde quieras que se muestre la lista de entradas programadas:

<h4>Próximas publicaciones</h4>
<ul>
<?php $my_query = new WP_Query('post_status=future&order=DESC&showposts=5');
if ($my_query->have_posts()) {
        while ($my_query->have_posts()) : $my_query->the_post(); $do_not_duplicate = $post->ID; ?>

        <li><?php the_title(); ?></li>

        <?php endwhile; } ?>
</ul>

Simplemente cambia el título del bloque a lo que quieras y la lista de entradas a mostrar en showposts=5.

Mostrar las entradas programadas con una función

Otra posibilidad es que muestres las entradas programadas ayudándote de una función que cree un shortcode. Luego podrás ponerlo en cualquier parte, un widget por ejemplo.

Sería algo así:

function ayudawp_upcoming_posts() { 
    // Consulta para obtener entradas programadas
    $the_query = new WP_Query(array( 
        'post_status' => 'future',
        'posts_per_page' => 3,
        'orderby' => 'date',
        'order' => 'ASC'
    ));
 
// El loop
if ( $the_query->have_posts() ) {
    echo '<ul>';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $output .= '<li>' . get_the_title() .' ('.  get_the_time('d-M-Y') . ')</li>';
    }
    echo '</ul>';
 
} else {
    // Cuando no haya programadas mostramos esto
    $output .= '<p>Ahora mismo no hay entradas programadas.</p>';
}
wp_reset_postdata(); 
return $output; 
} 
// Añadimos el shortcode
add_shortcode('programadas', 'ayudawp_upcoming_posts'); 
// Permite ejecutar el shortcode en widgets de texto
add_filter('widget_text', 'do_shortcode');

Lo añades al archivo functions.php de tu tema activo o a tu plugin de funciones personalizadas y ya tienes el shortcode [programadas] para usarlo donde quieras y mostrar las últimas entradas programadas.

Mostrar entradas programadas con plugins

Si todo lo anterior te da repelús o miedo no hay problema, hay plugins para hacer lo mismo. Te dejo un par de opciones. Ambos plugins añaden un nuevo widget, personalizable, desde el que mostrar tus próximas entradas programadas:


Como ves, mostrar las entradas programadas es muy sencillo, para todos los gustos. Además, puede ser una estrategia de fidelización muy interesante que puedes utilizar para atraer tráfico futuro a tu web.

La entrada Cómo mostrar las entradas programadas antes de que se publiquen la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.


Cómo desactivar pasarelas de pago según el importe del carrito

$
0
0

Imagina la siguiente situación…

Tienes una tienda online y quieres que, si el importe del carrito de tus clientes es menor de 1.000€ no esté disponible la pasarela de pago, por ejemplo, PayPal ¿cómo lo harías?

Y digo PayPal por poner una. Tú decides el motivo:

  • Falta de confianza de los usuarios en ciertas pasarelas para importes altos.
  • Elevadas comisiones.
  • Procesos complicados.
  • etc…

Si quieres que WooCommerce oculte o desactive pasarelas de pago dependiendo del importe del carrito, una sencilla función puede ayudarte.

Sería así:

/*
* Desactivamos PayPal y Stripe si el importe del carrito es mayor de 1000
*/
 
add_filter( 'woocommerce_available_payment_gateways', 'ayudawp_filtra_pasarelas', 1);

function ayudawp_filtra_pasarelas( $gateways ){
	global $woocommerce;

	if($woocommerce->cart->total > 1000) {
		unset($gateways['stripe']);
		unset($gateways['paypal']);
	}

	return $gateways;
}

Sencillo ¿verdad?

¿Quieres personalizar el código?

Puedes añadir o quitar pasarelas en tu lista de unset, cambiar la cantidad a partir de la cual se desactivarán, o si lo prefieres hacer justo lo contrario, desactivar pasarelas para cantidades menores (<) de la cantidad especificada.

¡Tú decides!

La entrada Cómo desactivar pasarelas de pago según el importe del carrito la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo detectar código obsoleto, erróneo o peligroso en tus plugins instalados

$
0
0

Está claro que una de las joyas de WordPress son los plugins. Son tantos, tan buenos, tan … gratis o baratos, que es difícil resistirse a probar todas esas maravillas en nuestra web.

Ahora bien, no siempre es buena idea instalar plugins a diestro y siniestro, porque debes tener en cuenta que no todos los desarrolladores son de confianza, o no siempre tienen los conocimientos suficientes para crear un código perfecto, o no siempre tienen buenas intenciones.

Incluso en el directorio oficial de WordPress te puedes encontrar plugins que usen código anticuado, con funciones obsoletas, o que use incorrectamente los estándares de código de WordPress. No digamos los que te descargues por ahí.

Afortunadamente, hay un modo estupendo de analizar todos los plugins que tengamos instalados (activos e inactivos), para comprobar y detectar cualquier código que:

  • Use funciones WordPress obsoletas
  • Utilice funciones inseguras como eval, base64_decode, system, exec, etc.
  • Tenga vulnerabilidades que pongan en riesgo tu web

Todo esto nos lo ofrece el denominado Plugin Inspector.

Una vez instalado y activo, crea un nuevo submenú en Plugins > Plugin Inspector para acceder a sus funcionalidades.

Una vez accedes a su pantalla verás una lista de los plugins instalados, activos o no, y un botón para comprobar su código (Check it).

Cuando hagas clic en el botón de comprobación de cualquier plugin se inicia la revisión automática del código del mismo y te mostrará una ventana de resultados.

En la misma se muestra un listado de cada uno de los archivos del plugin y si ha encontrado código con problemas o no, mostrándolo con un indicador de si está bien (OK), es inseguro (Unsafe) y otros posibles problemas.

Además, junto a cada resultado tienes un botón (view source) para abrir el archivo en cuestión y, si tiene algún problema, mostrarte las líneas afectadas por el mismo en una ventana emergente.

También te mostrará las funciones obsoletas con su ruta completa, número de línea, nombre de la función obsoleta y la nueva función recomendada que debería usar.

Es un plugin realmente útil, tanto para que los administradores responsables sepan qué tienen instalado y actuar en consecuencia, como para que los desarrolladores de plugins puedan comprobar fácil y rápidamente su propio código antes de hacerlo público.

Una vez termines de usarlo puedes desactivarlo y borrarlo sin problemas, cuando instales otro plugin, antes de activarlo, vuelve a instalar Plugin Inspector, lo revisas y decides.

Práctico ¿no?

La entrada Cómo detectar código obsoleto, erróneo o peligroso en tus plugins instalados la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo solucionar el error inesperado en translation-install.php

$
0
0

En ocasiones, al editar entradas o páginas, puedes encontrarte un feo error en pantalla que indica que hay un error inesperado con el archivo translation-install.php.

Suele ser algo así:

Error inesperado. Puede que algo vaya mal con WordPress.org o la configuración de este servidor. Si sigues teniendo problemas, por favor prueba en los foros de soporte. (WordPress no pudo establecer una conexión segura con WordPress.org. Por favor, contacta con el administrador de tu servidor.) in /home/xxxxxxx/public_html/wp-admin/includes/translation-install.php on line 65

Hay varias posibles soluciones a este error, así que ve probando:

Sustituye el archivo que da errores

Una opción es que esté corrupto el archivo /wp-admin/includes/translation-install.php así que sustitúyelo por una copia nueva de una descarga limpia de WordPress.

Anula la carga de la API

Otra opción es anular la carga de la API que provoca el problema. Puedes hacerlo de dos maneras.

Primero prueba añadiendo esto a tu archivo functions.php del tema activo:

function translations_api( $type, $args = null ) {
     return;

Si no funciona, borra el código anterior y prueba con este otro, también en el archivo functions.php:

add_action('http_api_curl', 'custom_curl_resolve', 10, 3 );
function custom_curl_resolve( $handle, $r, $url ) {
    curl_setopt($handle, CURLOPT_RESOLVE, array(
        "api.wordpress.org:80:66.155.40.187", 
        "api.wordpress.org:443:66.155.40.187", 
        "downloads.wordpress.org:80:66.155.40.203", 
        "downloads.wordpress.org:443:66.155.40.203")
    );
}

Parchea los problemas del curl PHP

Hay un plugin que puede también ser la solución, si falla todo lo anteterior. Se llama SaFly Curl Patch. Instálalo, actívalo y comprueba a ver si se arregla el problema.

La entrada Cómo solucionar el error inesperado en translation-install.php la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo mostrar las últimas entradas modificadas o actualizadas

$
0
0

Una práctica muy habitual para mantener o mejorar el tráfico de tus entradas más populares, de tu contenido esencial, es actualizarlas cada cierto tiempo, ampliando, actualizando y mejorando su contenido.

Pero lo que casi nadie suele caer es en mostrar en alguna parte de tu blog una lista de esas últimas entradas que has modificado, para seguir atrayendo atención y tráfico sobre ellas, ya que te has tomado el tiempo y esfuerzo de mejorarlas.

Con ello mejorarás su SEO atrayendo más clics y visitas a las mismas, lo que reforzará tu estrategia de contenido esencial.

¿A qué parecía lógico mostrarlas de algún modo?

Muestra las últimas entradas modificadas

Pues mira que fácil, solo tienes que hacer lo siguiente:

  1. Elige el lugar de tu tema en el que vas a mostrar la lista de entradas actualizadas recientemente, por ejemplo la barra lateral.
  2. Añade el siguiente código PHP donde quieras que aparezcan.

<?php // Mostrar entradas actualizadas ?>
<ul>
	<?php
	$recently_updated_posts = new WP_Query( array(
		'post_type'      => 'post',
		'posts_per_page' => 3
		'orderby'        => 'modified',
		'no_found_rows'  => true,
	) );
	if ( $recently_updated_posts->have_posts() ) :
		while( $recently_updated_posts->have_posts() ) : $recently_updated_posts->the_post(); ?>
			<li><a href="<?php the_permalink(); ?>" title="<?php esc_attr( get_the_title() ); ?>"><?php the_title(); ?></a></li>
		<?php endwhile; ?>
		<?php wp_reset_postdata(); ?>
	<?php endif; ?>
</ul>

El código mostrará una lista de las 3 últimas entradas actualizadas (posts_per_page).

Solo tienes que personalizarlo a tu gusto, darle estilos si quieres, y ya lo tienes.

Muestra las últimas entradas modificadas de una categoría

Si, además, quieres mostrar solo las entradas actualizadas de una categoría concreta el código sería de este modo:

<?php // Mostrar entradas actualizadas de categoria Destacados ?>
<ul class="updated-posts">
	<?php
	$recently_updated_posts = new WP_Query( array(
		'post_type'      => 'post',
		'posts_per_page' => 3
		'orderby'        => 'modified',
		'no_found_rows'  => true, 
		'category_name'  => 'destacados', // Solo mostrar entradas de categoría con el slug "destacados"
	) );
	if ( $recently_updated_posts->have_posts() ) :
		while( $recently_updated_posts->have_posts() ) : $recently_updated_posts->the_post(); ?>
			<li><a href="<?php the_permalink(); ?>" title="<?php esc_attr( get_the_title() ); ?>"><?php the_title(); ?></a></li>
		<?php endwhile; ?>
		<?php wp_reset_postdata(); ?>
	<?php endif; ?>
</ul>

Aquí, además de personalizar la cantidad de entradas, solo tienes que cambiar el slug de la categoría de ejemplo por la que tú quieras.

Muestra las últimas entradas modificadas con un plugin

Si no te atreves con los códigos también puedes probar el plugin Recent Posts Widget Extended que, entre sus ajustes, te permite mostrar solo las entradas actualizadas en el widget que añade al instalarse.

La entrada Cómo mostrar las últimas entradas modificadas o actualizadas la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo quitar las opciones de pantalla y la ayuda de WordPress

$
0
0

En ocasiones, para entregar WordPress con personalizaciones a clientes, puede ser interesante eliminar ciertos elementos comunes de WordPress, como las pestañas de ayuda y de opciones de pantalla que hay en el escritorio de administración.

Para quitarlas simplemente añade el siguiente código a tu plugin de personalizaciones:

//Quitar pestañas de ayuda y opciones de pantalla
add_filter( 'contextual_help', 'ayudawp_remove_dashboard_help_tab', 999, 3 );
add_filter( 'screen_options_show_screen', 'ayudawp_remove_help_tab' );
function ayudawp_remove_dashboard_help_tab( $old_help, $screen_id, $screen )
  {
     if( 'dashboard' != $screen->base )
     return $old_help;
     $screen->remove_help_tabs();
     return $old_help;
  }
function ayudawp_remove_help_tab( $visible )
  {
     global $current_screen;
     if( 'dashboard' == $current_screen->base )
     return false;
     return $visible;
  }

Pasarás de esto…

A esto otro…

La entrada Cómo quitar las opciones de pantalla y la ayuda de WordPress la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo ocultar productos agotados en WooCommerce

$
0
0

Aunque no es una estrategia que yo suela recomendar, pues muchas veces son precisamente los productos agotados los que dan una sensación de carencia que anima a comprar (cosas de la mercadotecnia), en ocasiones es interesante ocultar productos agotados, sin existencias, en una tienda online.

Ocultar productos agotados en WooCommerce es muy sencillo a priori.

Solo tienes que ir a WooCommerce > Ajustes > Productos > Inventario y seleccionar la casilla llamada “Ocultar en el catálogo los artículos agotados“.

Pero, si quieres tener más control sobre cómo ocultar productos agotados, puedes usar este código en tu plugin de personalizaciones o en el archivo functions.php del tema activo:

add_action( 'pre_get_posts', 'ayudawp_ocultar_agotados' );

function ayudawp_ocultar_agotados( $q ) {

    if ( ! $q->is_main_query() || is_admin() ) {
        return;
    }

    if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {

        $tax_query = (array) $q->get('tax_query');

        $tax_query[] = array(
            'taxonomy' => 'product_visibility',
            'field' => 'term_taxonomy_id',
            'terms' => array( $outofstock_term->term_taxonomy_id ),
            'operator' => 'NOT IN'
        );

        $q->set( 'tax_query', $tax_query );

    }

    remove_action( 'pre_get_posts', 'ayudawp_ocultar_agotados' );

}

La diferencia es que con el código se ocultan los productos agotados que tengan la taxonomía outofstock, que afecta también a variaciones.

La entrada Cómo ocultar productos agotados en WooCommerce la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Evita que WordPress, tus plugins y temas se conecten sin tu permiso

$
0
0

¿WordPress se conecta solo?

¡Sí, como lo oyes, tu web WordPress se está conectando sin tu permiso y sin avisar a WordPress.org! ¡Y lo hace a diario!

Pues sí, desde la versión 2.9, todas las instalaciones de WordPress se conectan en segundo plano, sin avisar, con WordPress.org, con el oscuro objetivo de:

  • Comprobar si hay actualizaciones del núcleo de WordPres.
  • Comprobar si hay actualizaciones de plugins o temas.
  • Comprobar si hay nuevas traducciones.
  • Recabar información estadística sobre tus plugins instalados y activos.
  • Recabar información estadística sobre tu versión de PHP, MySQL, versión de WordPress e idioma.

¿O pensabas que para completar estos datos hacían algún tipo de encuesta?

¿También los plugins y temas?

Efectivamente, también los plugins y temas, especialmente los premium, se conectan a sus respectivas APIs para comprobar si hay actualizaciones, si tienes la licencia correspondiente, esas cosillas que hacen más amena la vida del administrador.

¡Malditos!

¿Debería evitarlo? ¿Es malo? ¿Cumple el RGPD?

Este comportamiento inocente de WordPress, tus plugins y temas no tienen mayor transcendencia siempre y cuando lo conozcas, pero en ocasiones, sobre todo en entornos de desarrollo, pero también a veces en situaciones más normales, verás un feo error en tu sitio WordPress que te dirá algo así:

Ha sucedido un error inesperado. Puede que algo vaya mal con WordPress.org o con la configuración de este servidor. Si sigues teniendo problemas, por favor, prueba en los foros de soporte.

Y claro, acojona, sobre todo por ese “Puede que algo vaya mal con WordPress.org…“.

Bueno, pues todo tiene solución, por supuesto.

Si alguna vez te encuentras este aviso, o simplemente no quieres interrupciones en entornos de desarrollo en local o remoto, puedes desactivar estas conexiones de WordPress, tus plugins y temas.

Desactivando las conexiones HTTP con una función

Un modo de desactivarlas es añadir este filtro a tu plugin de utilidades:

add_filter( 'pre_http_request', '__return_true', 100 );

Con esta simple línea de código bloqueas toda petición HTTP externa.

Desactivando solo algunas conexiones HTTP con otra función

Ahora bien, si no quieres bloquear todas las conexiones, sino solo algunas, podrías personalizar a tu gusto el siguiente código, que también deberás añadir a tu plugin personal:

function block_api_calls() {		
		global $pagenow;
		if (( $pagenow == 'plugins.php' ) || 
		( $pagenow == 'plugin-install.php' ) || 
		( $pagenow == 'themes.php' ) || 
		( $pagenow == 'update.php' ) || 
		( $pagenow == 'index.php' ) || 
		( $pagenow == 'admin.php' ) || 
		( $pagenow == 'update-core.php' )){
			 add_filter( 'pre_http_request', '__return_false', 100 );
		}
		else{
			 add_filter( 'pre_http_request', '__return_true', 100 );
		}		
	}
add_action( 'admin_init', 'block_api_calls', 1 );

Solo tienes que añadir/eliminar líneas $pagenow según necesidad

Desactivando las conexiones HTTP desde wp-config.php

Como ya publiqué en la guía completa de wp-config.php, también puedes bloquear estas conexiones desde el archivo wp-config.php, con la posibilidad añadida de poder añadir exclusiones.

Primero bloqueas las peticiones HTTP añadiendo esta línea:

define( 'WP_HTTP_BLOCK_EXTERNAL', true );

Para, a continuación, añadir tus exclusiones así:

define( 'WP_ACCESSIBLE_HOSTS', 'rpc.pingomatic.com, api.wordpress.org,*.github.com, *.ayudawp.com' );


Resumiendo

No es malo que WordPress, tus plugins y temas se conecten con sus respectivas APIs, pero es mejor si…

  1. Sabes que está pasando
  2. Sabes cómo controlarlo

Si este artículo ha cumplido con estos objetivos me doy por satisfecho 🙂

La entrada Evita que WordPress, tus plugins y temas se conecten sin tu permiso la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.


Cómo incluir tipos de contenido personalizados en las búsquedas de WordPress

$
0
0

Por defecto, WordPress no busca en tipos de contenidos personalizados (custom post types), así que si quieres que el buscador incluido también busque en estos contenidos debes añadirlos en las cadenas de búsqueda.

Para conseguirlo tienes que añadir un código como el siguiente a tu plugin de personalizaciones:

/* Activar búsquedas también en los CPT */
function buscar_cpt( $query ) {
 if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'persona' )); } 
 return $query;
}
add_filter( 'the_search_query', 'buscar_cpt' );

Usa el código anterior de ejemplo, cambiando/quitando/añadiendo en el array los tipos de contenido personalizados que tengas registrados en tu sitio.

La entrada Cómo incluir tipos de contenido personalizados en las búsquedas de WordPress la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo mejorar automáticamente imágenes JPG subidas a WordPress

$
0
0

A veces no nos queda más remedio que subir a nuestro WordPress las imágenes que tenemos, no las que nos gustaría tener, pero ¿qué pasa con esa imagen que salió desenfocada, sin contraste? ¿podemos arreglarla?

Desafortunadamente, el editor de imágenes incluido en WordPress no permite hacer este tipo de mejoras, solo nos deja rotar, recortar y poco más.

Pero sí que podemos forzar la mejora las imágenes en JPG que subamos, consiguiendo un mayor y mejor enfoque de las mismas.

Mejorando los JPG con un código que puedas personalizar

Mi consejo es que añadas este código a tu plugin de personalizaciones, o al archivo functions.php del tema activo para mejorar las imágenes en JPG que subas a tu WordPress.

function ajx_sharpen_resized_files( $resized_file ) {

    $image = wp_load_image( $resized_file );
    if ( !is_resource( $image ) )
        return new WP_Error( 'error_loading_image', $image, $file );

    $size = @getimagesize( $resized_file );
    if ( !$size )
        return new WP_Error('invalid_image', __('No se pudo determinar el tamaño del archivo'), $file);
    list($orig_w, $orig_h, $orig_type) = $size;

    switch ( $orig_type ) {
        case IMAGETYPE_JPEG:
            $matrix = array(
                array(-1, -1, -1),
                array(-1, 16, -1),
                array(-1, -1, -1),
            );

            $divisor = array_sum(array_map('array_sum', $matrix));
            $offset = 0; 
            imageconvolution($image, $matrix, $divisor, $offset);
            imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 90, 'edit_image' ));
            break;
        case IMAGETYPE_PNG:
            return $resized_file;
        case IMAGETYPE_GIF:
            return $resized_file;
    }

    return $resized_file;
}   

add_filter('image_make_intermediate_size', 'ajx_sharpen_resized_files',900);

Con estos ajustes conseguirás que una imagen así…

Pase a verse así…

Como puedes comprobar, mucho más detalle, enfoque y contraste.

Mejorando la calidad inicial

Por si no lo sabías, WordPress reduce la calidad inicial de los JPG al subirlos, pero puedes evitarlo, simplemente cambiando la línea siguiente del código anterior:

imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 90, 'edit_image' ));

Por esta otra:

imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 100, 'edit_image' ));

Otra posibilidad es simplemente añadir este filtro a tu plugin de funciones o functions.php:

/* Mejorar calidad de JPG de WordPress */
add_filter('jpeg_quality', function($quality) { return 100; } );

Mejorando los JPG con un plugin

También, si lo prefieres, puedes aplicar la mejora a los JPG con el plugin Sharpen Resized Images que, aunque hace tiempo que no se actualiza, sigue funcionando.

No tiene ajustes, solo tienes que instalarlo y activarlo.

Notas importantes

Algunos detalles sobre este truco:

  • Solo funciona con imágenes en JPG.
  • Tanto si usas el código como el plugin solo funciona para las imágenes nuevas que subas a partir de activarlo.
  • Si quieres aplicarlo a las imágenes ya subidas tendrás que regenerar miniaturas tras activarlo, con plugin, o desde WP-CLI.

La entrada Cómo mejorar automáticamente imágenes JPG subidas a WordPress la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

WooCommerce: Vaciar carrito al salir

$
0
0

Si tienes una tienda online creada con WooCommerce, cuando un usuario añade artículos a su carrito de compra, aunque salga de la sesión se mantienen ahí los artículos para cuando vuelva a conectarse.

Esto, que normalmente es cómodo, incluso interesante para aplicar estrategias de evitar abandonos de carrito, otras veces puede suponer un inconveniente, incluso problemas con el RGPD, o simplemente prefieres que se vacíe el carrito en cada sesión.

Sea cual fuera el motivo, si quieres que WooCommerce vacíe el carrito de los usuarios al salir de la sesión solo tienes que añadir esta función a tu plugin de personalizaciones:

function vaciar_carrito_al_salir() {
    if( function_exists('WC') ){
        WC()->cart->empty_cart();
    }
}
add_action('wp_logout', 'vaciar_carrito_al_salir');

 

La entrada WooCommerce: Vaciar carrito al salir la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

WooCommerce: Cómo mostrar la descripción corta del producto en la tienda

$
0
0

La descripción corta de un producto en WooCommerce es la que va a marcar diferencias, la que muchas veces terminará de convencer el cliente a comprar el producto, de ahí su importancia.

Por este motivo es vital elaborar una descripción corta impactante, descriptiva, que venda.

Pero ¿qué pasa con esa descripción en nuestra tienda, o en las páginas de categorías de producto?

Si es tan importante ¿por qué WooCommerce no la muestra también en los listados de productos?

En realidad no sé responderte a esta pregunta, pero sí solucionar el problema.

Así que, si quieres que en la página de la tienda y listados de categorías y productos aparezca también la descripción corta de tus productos la solución es sencilla, eso al menos sí te lo prometo.

Solo tienes que añadir una función al archivo functions.php de tu tema hijo activo para mostrarla, y tienes dos alternativas posibles, usa la que mejor se vea en tu tema.

La más sencilla es esta, y personalmente la que más me gusta, pues el texto de la descripción corta también está enlazado al producto:

add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_single_excerpt', 5);

La otra función, que también consigue lo mismo, ya te digo que va en gustos, sería esta otra:

add_action( 'woocommerce_after_shop_loop_item', 'woo_show_excerpt_shop_page', 5 );
function woo_show_excerpt_shop_page() {
	global $product;

	echo $product->post->post_excerpt;
}

Al final, lo que consigues es pasar de esto…

A esto otro…

La entrada WooCommerce: Cómo mostrar la descripción corta del producto en la tienda la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo ver fácilmente todos los ajustes de WordPress

$
0
0

Parece mentira, pero a estas alturas aún existe el acceso directo a todos los ajustes de WordPress desde la administración. Y no es que no sea útil, pero es peligroso si no se sabe lo que se hace.

Me refiero a que puedes añadir a la URL de administración de tu sitio simplemente options.php y ver todos los ajustes de WordPress en la base de datos, incluso cambiar muchos de ellos.

O sea, que si tecleas algo así:

https://misitio.com/wp-admin/options.php

Verás la lista completa de opciones de WordPress…

Ante esto, lo primero que debes saber es que lo que modifiques ahí lo estás modificando directamente en la base de datos, con lo que la escabechina que puedas liar es tremenda.

Por otra parte, para un administrador informado, es un modo rápido de modificar ciertas líneas de la tabla options de WordPress sin tener que abandonar la administración de WordPress y tener que abrir el gestor de bases de datos.

Es para este administrador informado para el que puedes añadir un enlace rápido a estas opciones, para que no tenga que memorizarlo, ni tener que acordarse de que existe.

Solo tienes que añadir lo siguiente a tu plugin de personalizaciones o mu-plugin:

//Submenú para todos los ajustes de WordPress
function enlace_todos_los_ajustes() {
    add_options_page(__('Todos los ajustes'), __('Todos los ajustes'), 'administrator', 'options.php');
}
add_action('admin_menu', 'enlace_todos_los_ajustes');

Tras guardar los cambios el administrador verá un nuevo submenú, en Ajustes > Todos los ajustes, desde donde acceder a todas esas – peligrosas pero útiles – opciones.

La entrada Cómo ver fácilmente todos los ajustes de WordPress la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Editor visual o HTML por defecto en WordPress

$
0
0

El editor clásico de WordPress por defecto recuerda si la última vez que lo usaste lo hiciste en la pestaña visual o HTML, lo que a veces puede resultar molesto, al tener que hacer un clic inicial con el que no contabas a la hora de escribir una entrada.

Pero no hay problema, pues es muy fácil predeterminar qué editor quieres mostrar siempre por defecto, el visual o el HTML.

Solo tienes que añadir este código al archivo functions.php del tema activo o a tu plugin de personalizaciones:

function mi_editor_por_defecto() {
    $r = 'tinymce'; // html o tinymce
    return $r;
}
add_filter( 'wp_default_editor', 'mi_editor_por_defecto' );

En el ejemplo de arriba cargamos el editor tinymce, el visual, pero puedes cambiarlo al HTML solo modificando esa línea.

Otro modo de hacerlo, con menos código, sería con esta otra función, que aplica el mismo filtro (wp_default_editor) pero de manera más directa:

add_filter('wp_default_editor', create_function('', 'return "html";')); // Elige html o tinymce para el return

En este caso al revés, definimos por defecto el editor HTML, pero puedes poner también el visual como antes.

Nota: Este truco solo funciona con el editor clásico de WordPress, no con Gutenberg

La entrada Editor visual o HTML por defecto en WordPress la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

HTML5: Cómo sustituir automáticamente “img” con “figure” en WordPress

$
0
0

Si quieres que tu web genere código HTML5 y envuelva las imágenes de tus contenidos con la etiqueta HTML5 <figure> en vez de la clásica <img> aquí tienes unos cuantos trucos para conseguirlo.

Un método es simplemente envolver cualquier imagen con <figure>, para lo que tendrás que añadir esta función a tu plugin de personalizaciones o al archivo functions.php del tema activo:

add_filter( 'image_send_to_editor', 
    function( $html, $id, $caption, $title, $align, $url, $size, $alt ) 
    {
        if( current_theme_supports( 'html5' )  && ! $caption )
            $html = sprintf( '<figure>%s</figure>', $html );

        return $html;
    }
, 10, 8 );

Funcionará siempre y cuando la imagen no tenga leyenda (caption)

Si quieres un método más limpio, que sustituya cualquier etiqueta de párrafo e imagen en el contenido por <figure> entonces igual este código te va mejor:

function cambiar_img_por_figure( $content )
{ 
    $content = preg_replace( 
        '/<p>\\s*?(<a rel=\"attachment.*?><img.*?><\\/a>|<img.*?>)?\\s*<\\/p>/s', 
        '<figure>$1</figure>', 
        $content 
    ); 
    return $content; 
} 
add_filter( 'the_content', 'cambiar_img_por_figure', 99 );

Y, para terminar, una versión del código anterior pero usando DOMDocument sería así:

add_filter('the_content', function ($content) {
    libxml_use_internal_errors(true);
    $dom = new DOMDocument();
    $dom->loadHTML('<?xml encoding="utf-8" ?>' . $content);
    $images = $dom->getElementsByTagName('img');
    foreach ($images as $image) {
        $child = $image; 
        $wrapper = $image->parentNode; 
        if ($wrapper->tagName == 'a') {
            $child = $wrapper; 
            $wrapper = $wrapper->parentNode; 
        }
        if ($wrapper->tagName == 'p') {
            $figure = $dom->createElement('figure');
            $figure->setAttribute('class', $image->getAttribute('class'));
            $image->setAttribute('class', ''); 
            $figure->appendChild($child); 
            $wrapper->parentNode->replaceChild($figure, $wrapper); 
        }
    }
    libxml_use_internal_errors(false);
    return str_replace(['<body>', '</body>'], '', $dom->saveHTML($dom->getElementsByTagName('body')->item(0)));
}, 99);

 

La entrada HTML5: Cómo sustituir automáticamente “img” con “figure” en WordPress la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.


Cómo quitar el anuncio de Autoptimize de optimizar imágenes con ShortPixel

$
0
0

Desde la última actualización del plugin Autoptimize, la 2.4.1, hay un anuncio que anima a pasarse por la página de ajustes y optimizar imágenes con el servicio de ShortPixel.

Pero da igual lo que hagas, que cierres el aviso de texto, te pases por los ajustes, incluso aunque actives el servicio, el anuncio sigue saliendo en todas las pantallas de administración de WordPress.

El autor del plugin ya ha dicho que es un problema con los transients, y que posiblemente lo arreglará en una futura versión 2.4.2 o posterior, pero si eres de los que odias estos avisos en tu escritorio no hace falta que esperes, aquí tengo la solución.

Abre tu plugin de personalizaciones, mu-plugin o archivo functions.php del tema y añade este filtro:

/* Quitar aviso de optimizaciones de imágenes de shortpixel de autoptimize */
add_filter( 'autoptimize_filter_main_imgopt_plug_notice', '__return_empty_string' );

Guarda los cambios y el puñetero aviso desaparecerá.

La entrada Cómo quitar el anuncio de Autoptimize de optimizar imágenes con ShortPixel la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Añade anclajes HTML fácilmente con el editor Gutenberg

$
0
0

Una de las novedades del editor Gutenberg de WordPress 5.x de las que igual no te has dado cuenta es de que puedes enlazar a partes de una entrada fácilmente, añadiendo anclajes HTML fácilmente.

Lo que permiten estos anclajes es enlazar a partes, normalmente encabezados (subtítulos) de una misma entrada, para acceder rápidamente a ellos tecleando en la URL generada.

Esto es muy útil en páginas con mucho contenido, o simplemente para enlazar a partes concretas, desde la misma entrada, desde un menú personalizado, desde donde quieras.

Para crear estos anclajes HTML en Gutenberg es muy fácil.

Primero añade un bloque de encabezado y, en los ajustes avanzados del bloque, verás precisamente un apartado llamado Anclajes HTML.

Ponle el nombre que quieras a cada anclaje y luego, una vez guardados los cambios, podrás acceder al mismo fácilmente añadiendo el nombre precedido de almohadilla (#) a la URL de la entrada.

Por ejemplo:

https://misitio.es/mi-entrada/#anclaje1

Como ves es muy fácil de hacer, pero si prefieres puedes ver como se hace en el siguiente vídeo que he realizado, y que también puedes ver en el canal de YouTube de Ayuda WordPress

La entrada Añade anclajes HTML fácilmente con el editor Gutenberg la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Tutorial Divi: Oculta la barra de menú secundaria al hacer scroll

$
0
0

Desde las opciones del tema Divi puedes de manera sencilla decidir qué hará la barra de menú principal del tema, si seguir la navegación al hacer scroll o quedarse fija arriba, es algo fácil de conseguir.

Y muchos usuarios eligen la navegación fija porque así consiguen más clics en sus menús, a medida que el visitante hace scroll en su página, lo que es un buen modo de conseguir clientes para sus servicios y productos.

Otra cosa es la barra de menú secundaria, por defecto más pensada para ofrecer información como el teléfono, email y enlaces sociales, que poco aporta a esta estrategia de consecución de leads y sería mejor que se quedase oculta al hacer scroll, la mayoría de las ocasiones.

Si es este tu caso, puedes ocultar la barra de menú secundaria cuando el usuario haga scroll, simplemente añadiendo el siguiente código en Personalizador de temas > CSS adicional:

/* Ocultar cabecera secundaria divi al hacer scroll */
    #top-header {
            z-index: 9;}
    #main-header{
        transition: 0.5s;
        -moz-transition: 0.5s;
        -webkit-transition: 0.5s;}
    #main-header.et-fixed-header {
        top: 0 !important;}

Cuando publiques los cambios la barra de menú secundaria de Divi se ocultará al hacer scroll, y solo seguirá la navegación del usuario la barra de menú principal.

En el siguiente vídeo tienes el efecto antes y después de aplicar el CSS…

La entrada Tutorial Divi: Oculta la barra de menú secundaria al hacer scroll la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo poner el carrito y el pago en la misma página de WooCommerce

$
0
0

Lo sé, te he sorprendido ¿A que no habías pensado que esta virguería era posible?. ¿A que le ves las posibilidades de poner el carrito y el pago en la misma página de tu tienda online?

Siempre que hablamos de eCommerce, de canalizar el embudo o funnel de ventas en una tienda online, hay un mantra básico: cuantos menos clics y pasos para que el cliente pague mejor.

Y uno de los clics que nos podemos ahorrar es el paso por el carrito, pero sin dejar de pasar por el carrito.

Porque claro, podemos forzar a que el cliente no pase por el carrito y llevarle directamente al pago, pero ¿y si queremos que también pase por el carrito para hacer venta cruzada?

La solución perfecta es unificar en una misma página el carrito y el pago, y que el cliente decida, solo tienes que seguir las siguientes instrucciones…

Añade el shortcode del carrito a la página de finalizar compra

El modo que WooCommerce tiene de mostrar el carrito o las opciones de finalizar compra es mediante shortcodes.

Y uno podría pensar que es algo tan fácil como poner los 2 shortcodes en la misma página ¿no?

Error: Si haces eso generarás varios errores así que vamos a crear una función que añada, sobre la marcha, el shortcode del carrito a la página de finalizar compra.

Simplemente copia y pega el siguiente código en tu plugin de personalizaciones o en el archivo functions.php del tema activo:

/* Añade shortcode del carrito a la página de finalizar compra */
add_action( 'woocommerce_before_checkout_form', 'carrito_y_pago_juntos', 5 );
function carrito_y_pago_juntos() {
if ( is_wc_endpoint_url( 'order-received' ) ) return;
echo do_shortcode('[woocommerce_cart]');
}

Una vez guardes los cambios, cuando un cliente añada productos al carrito, pasarás de esto…

A esto otro…

carrito y pago en la misma página de WooCommerce

Chulo ¿eh? Pero no hemos terminado.

Porque eso es lo que veremos si vamos directamente a finalizar compra, pero el carrito aún existe ¿verdad?

Y si no hay ningún producto en el carrito, si tratamos de pagar, WooCommerce nos ofrecerá volver al carrito igualmente, y no queremos eso ¿no?

Cambia los ajustes de página de carrito y finalizar compra

Ahora toca decirle a WooCommerce que la página de carrito y finalizar compra son la misma cosa.

Para eso ve al menú de administración WooCommerce > Ajustes > Avanzado, y selecciona la página de finalizar compra también para el carrito, así:

Guarda los cambios, como siempre.

Borra la página del carrito

Como ya hemos hecho el bucle perfecto en este momento ya puedes borrar la página del carrito original, pues ya no la necesitarás.

Ya sabes: Escritorio de WordPress > Páginas > Enviar a la papelera.

Extra: Redirige los carritos vacíos a la tienda

Para terminar de hacer perfecto nuestro embudo de ventas falta un retoque (opcional).

Lo que le falta es redirigir a los usuarios a la tienda – o cualquier otra página – si por error visita la página de finalizar compra y no hay ningún producto aún en el carrito.

Y es que si accede a la página del carrito será como una encerrona, porque en realidad ya es la página de finalizar compra, pero sin modo de volver a la tienda, ya que esta página no tiene esa opción que sí tenía la de carrito.

Para ello solo tienes que añadir esta otra función:

/* Redirigir a pagina de tienda si el carrito está vacío */
add_action( 'template_redirect', 'redirigir_a_portada_si_carrito_vacio' );
function redirigir_a_portada_si_carrito_vacio() {
    if ( is_cart() && is_checkout() && 0 == WC()->cart->get_cart_contents_count() && ! is_wc_endpoint_url( 'order-pay' ) && ! is_wc_endpoint_url( 'order-received' ) ) {
        wp_safe_redirect( home_url() );
        exit;
    }
}

En este caso redirigimos al usuario a la página de inicio (home_url), pues suele ser la mejor opción, pues ahí tendrás tus ofertas, productos destacados, diseño personalizado orientado a conversión, etc ¿no?


Nada más, espero que aumenten tus ventas con este truco tan majo al reducir pasos en tu funnel de ventas de WooCommerce.

La entrada Cómo poner el carrito y el pago en la misma página de WooCommerce la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Cómo cambiar el texto “Añadir al carrito” en WooCommerce (actualizado)

$
0
0

Son muchas las cosas que puedes personalizar en una tienda online con WooCommerce, y  un básico es cambiar el texto del botón “Añadir al carrito” según necesidad.

Además es muy fácil, solo tienes que elegir el código adecuado a tus necesidades de los que tienes a continuación, añadirlo a tu plugin de utilidades o al archivo functions.php y modificar el texto de ejemplo en el código por el que tu prefieras.

Cambiar el botón “Añadir al carrito” en la página de producto

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );    // 2.1 +
 
function woo_custom_cart_button_text() {
 
        return __( 'Mi texto para el botón', 'woocommerce' );
 
}

Cambiar el botón “Añadir al carrito” en el archivo de productos

add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' );    // 2.1 +
 
function woo_archive_custom_cart_button_text() {
 
        return __( 'Mi texto para el botón', 'woocommerce' );
 
}

Cambiar el botón “Añadir al carrito” por tipo de producto en el archivo de productos

add_filter( 'woocommerce_product_add_to_cart_text' , 'custom_woocommerce_product_add_to_cart_text' );
/**
 * custom_woocommerce_template_loop_add_to_cart
*/
function custom_woocommerce_product_add_to_cart_text() {
	global $product;
	
	$product_type = $product->product_type;
	
	switch ( $product_type ) {
		case 'external':
			return __( 'Comprar productos', 'woocommerce' );
		break;
		case 'grouped':
			return __( 'Ver productos', 'woocommerce' );
		break;
		case 'simple':
			return __( 'Añadir al carrito', 'woocommerce' );
		break;
		case 'variable':
			return __( 'Selección de opciones', 'woocommerce' );
		break;
		default:
			return __( 'Leer más', 'woocommerce' );
	}
	
}

Cambiar el botón “Añadir al carrito” por categoría

En este caso tenemos que personalizar a nuestro gusto un código como el siguiente:

add_filter( 'woocommerce_product_add_to_cart_text', 'ayudawp_texto_carrito_por_categoria' );
  
function ayudawp_texto_carrito_por_categoria() {
global $product;
 
$terms = get_the_terms( $product->ID, 'product_cat' );
 foreach ($terms as $term) {
            $product_cat = $term->name;
            break;
}
 
switch($product_cat)
{
    case 'categoria1'; //Nombre de una categoría
        return 'Texto del botón para la categoría 1'; break;
    case 'categoria2';
        return 'Texto del botón para la categoría 1'; break;
    default;
        return 'Texto del botón por defecto para el resto de categorías'; break;
}
}

Cambiar el texto “Añadir al carrito” con plugin

Nos recuerda Enrique J. Ros, con razón, que hay un plugin, además creado por él mismo, que permite también personalizar el texto, así que si prefieres tirar de plugin échale un vistazo a “Add to cart button custom text“.

Otro día veremos más personalizaciones para WooCommerce. Si tienes tu propia lista de favoritas nos lo cuentas en los comentarios.

La entrada Cómo cambiar el texto “Añadir al carrito” en WooCommerce (actualizado) la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Viewing all 326 articles
Browse latest View live


Latest Images