5 Snippets de WordPress para ahorrarte algunos plugins

Si hay algo que caracteriza a WordPress es su repositorio de plugins donde podrás encontrar casi cualquier cosa que necesites en tu sitio web

Bien es cierto que cada plugin carga una serie de scripts y puede consumir algo de memoria, si nuestro sitio tiene pocos plugins puede que el impacto al instalar uno más no se aprecie pero dependiendo del sitio y otros factores como el servidor, el incremento en el uso de plugins o un mal desarrollo de alguno de estos puede provocar conflictos en la web o tiempos de carga más largos de lo normal.

Una gran cantidad de plugins a veces no tiene porque ser necesaria si las tareas que realizan se pueden conseguir con fragmentos de código.

Y aquí es donde empieza lo interesante de este post, a continuación te dejo algunos fragmentos de código o snippets de WordPress para que puedas ahorrarte algunos plugins en el caso de que necesites estas funcionalidades y las estés usando con plugins.

Te aconsejo que guardes un backup de tu sitio y también del archivo que vayas a modificar antes de hacer cualquier cambio.

Snippets de WordPress

Añadir un checkbox de privacidad en el checkout de WooCommerce

WooCommerce ya incorpora un checkbox para las condiciones de compra pero si quieres añadir otro checkbox para aceptar las condiciones en la política de privacidad puedes usar este fragmento de código:

add_action( 'woocommerce_review_order_before_submit', 'add_privacy_checkbox', 9 );
function add_privacy_checkbox() {
woocommerce_form_field( 'privacy_policy', array(
'type' => 'checkbox',
'class' => array('form-row privacy'),
'label_class' => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
'input_class' => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
'required' => true,
'label' => 'He leído y acepto la <a href="https://TUSITIOWEB.COM/PAGINA-PRIVACIDAD" target="_blank">Política de Privacidad</a>',
));
}
add_action( 'woocommerce_checkout_process', 'privacy_checkbox_error_message' );
function privacy_checkbox_error_message() {
if ( ! (int) isset( $_POST['privacy_policy'] ) ) {
wc_add_notice( __( 'Debes aceptar la política de privacidad para realizar tu pedido' ), 'error' );
}
}

Añádelo al functions.php de tu theme, usa un child theme para evitar perder los cambios cuando actualices.

Adjuntar un archivo en los mails de WooCommerce

Si quieres adjuntar un archivo en los mails de WooCommerce puedes hacerlo con un sencillo snippet, de esta forma puedes incluir documentos como hojas de devolución, condiciones, contratos…

Introduce el siguiente snippet en el functions.php

add_filter( 'woocommerce_email_attachments', 'mbcreation_woocommerce_attachments', 10, 3 );
function mbcreation_woocommerce_attachments($attachments, $email_id, $email_object){
	if( $email_id === 'customer_on_hold_order'){
		$attachments[] = get_attached_file( 612 );
	}
	return $attachments;
}

Para adjuntar el archivo, súbelo primero a la biblioteca e introduce el id correspondiente en la linea 4

$attachments[] = get_attached_file( 612 );
snippets de wordpress

reemplazando el número por el id que resulte al subir tu archivo, ese id puedes obtenerlo en la url de dicho archivo.

Puedes selecionar a que email adjuntar el archivo en la linea 3, en el ejemplo se envía cuando el pedido está a la espera.

Estados de pedido:

  • cancelled_order (pedido cancelado)
  • customer_completed_order (pedido completado)
  • customer_new_account (nueva cuenta de usuario)
  • customer_note (nota al cliente)
  • customer_on_hold_order (pedido en espera)
  • customer_processing_order (pedido procesando)
  • customer_reset_password (cambio de contraseña)
  • failed_order (pedido fallido)
  • new_order (nuevo pedido)

Ocultar gastos de envío cuando el envío gratis está disponible

Otro sencillo snippet para el functions.php de tu theme que desactiva los gastos de envío cuando un pedido está disponible para envío gratuito:

function mostrar_solo_envio_gratis( $rates ) {
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}
	return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'mostrar_solo_envio_gratis', 100 );

Mostrar contenido solo a usuarios logueados

Este snippet también es para el functions.php, es útil cuando quieres mostrar contenido solo a usuarios que estén logueados, puede que sea un poco limitado pero cumple con su función.

add_shortcode( 'solo_usuarios', 'access_check_shortcode' );
 
function access_check_shortcode( $attr, $content = null ) {
 
  extract( shortcode_atts( array( 'capability' => 'read' ), $attr ) );
 
  if ( current_user_can( $capability ) &amp;&amp; !is_null( $content ) &amp;&amp; !is_feed() )
    return $content;
 
  return 'Debes ser usuario registrado para ver este contenido, <a href="https://link-de-registro">regístrate</a>regístrate o <a href="https://link-de-acceso">accede</a>';
}

usa el shortcode [solo_usuarios]aquí el contenido a ocultar[/solo_usuarios]

Es posible que pueda provocar algún conflicto si a su vez introduces otro shortcode en el contenido que intentas ocultar.

Eliminar cadenas de recursos estáticos

Si realizas un test de carga de tu web en sitios como Pingdom o GTMetrix es posible que entre las sugerencias veas la de eliminar cadenas de recursos estáticos o «Remove query strings from statics resources» esto significa que hay urls que presentan caracteres como «&» o «?» que identifican el script, en WordPress hay archivos CSS y JS que los tienen.

Eliminando estas cadenas no solo estamos mejorando el rendimiento de nuestra web sino que además evitamos dar pistas de las versiones de dichos archivos a posibles atacantes.

Usa el siguiente snippet en tu functions.php

function vc_remove_wp_ver_css_js( $src ) {
 if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) ) 
$src = remove_query_arg( 'ver', $src ); 
return $src; 
} 
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 ); 
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );

Una vez añadido comprueba que tu web carga sin problema y procede a realizar de nuevo los tests de carga.


Hasta aquí estos snippets de WordPress, espero que te sirvan de ayuda si quieres descubrir más pásate por la sección de Snippets

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.