WooCommerce : Listado todas las Funciones Implementadas en mi Web

Fecha Publicación:       22 de Abril de 2026
Fecha Modificación:       22 de Abril de 2026

 

Funciones Implementadas en la Tienda de Productos

Ficha de Producto en la tienda de WooCommerce (1)

Usando Code snippets (Fragmentos de código)

WooCommerce : Shortcode mostrar el stock en la lista de productos y "Productos relacionados"

En la imagen "Ficha de Producto en la tienda de WooCommerce (1)"   se  ve que aparece el stock (50 en stock)

//Shortcode para mostrar stock

add_action( 'woocommerce_after_shop_loop_item_title', 'show_stock_quantity_shortcode' );
function show_stock_quantity_shortcode() {
	global $product;

    if ( $product->is_in_stock() ) {
        echo '<div class="stock" >' . $product->get_stock_quantity() . ' en stock</div>';
    } else {
        echo '<div class="out-stock" >No hay stock</div>';
    }
}

WooCommerce Agregar campo cantidad en Ficha de producto de la tienda  

Agrega un campo para agregar la cantidad de productos a comprar (esta al costado del boton "añadir al carrito") 

En la imagen "Ficha de Producto en la tienda de WooCommerce (1)"  se aprecia el campo numerico 

//https://stackoverflow.com/questions/48722178/add-a-quantity-field-to-ajax-add-to-cart-button-on-woocommerce-shop-page
//Me tomó un día entero hacer que esto funcionara, pero aquí está el código que funcionó para mí. 
//Agregue a su funciones.php: está adaptado de lo anterior y estoy en WooCommerce 5.0.0
//
add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_loop_ajax_add_to_cart', 10, 2 );
function quantity_inputs_for_loop_ajax_add_to_cart( $html, $product ) {
    if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
        // Get the necessary classes
        $class = implode( ' ', array_filter( array(
            'button',
            'product_type_' . $product->get_type(),
            $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
            $product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
        ) ) );

        // Adding embeding <form> tag and the quantity field
        $html = sprintf( '%s%s<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>%s',
        '<form class="cart">',
        woocommerce_quantity_input( array(), $product, false ),
        esc_url( $product->add_to_cart_url() ),
        esc_attr( isset( $quantity ) ? $quantity : 1 ),
        esc_attr( $product->get_id() ),
        esc_attr( $product->get_sku() ),
        esc_attr( isset( $class ) ? $class : 'button' ),
        esc_html( $product->add_to_cart_text() ),
        '</form>'
        );
    }
    return $html;
}

add_action( 'wp_footer' , 'archives_quantity_fields_script' );

function archives_quantity_fields_script(){
    //if( is_shop() || is_product_category() || is_product_tag() ): ?>
    <script type='text/javascript'>
        jQuery( document ).ready( function( $ ) {
        $( document ).on( 'change', '.quantity .qty', function() {
            $( this ).parent( '.quantity' ).next( '.add_to_cart_button' ).attr( 'data-quantity', $( this ).val() );
            //alert("Changed");
        });
    });
        
        jQuery(function($) {
            // Update quantity on 'a.button' in 'data-quantity' attribute (for ajax) 
            $(".add_to_cart_button.product_type_simple").on('click', function() {
                var $button = $(this);
                $button.data('quantity', $button.parent().find('input.qty').val());
            });
            // remove old "view cart" text, only need latest one thanks!
            $(document.body).on("adding_to_cart", function() {
                $("a.added_to_cart").remove();
            });
        });
    </script>
    <?php //endif;
     }
     

plugin Advanced Custom Fields

Woocommerce : Mostrar en la web campo creado con plugin Advanced Custom Fields

→ En la imagen "Ficha de Producto en la tienda de WooCommerce (1)"  aparece el precio S/ 343.35 en la parte final

/* https://unidadvirtual.com/woocommerce-agregar-campos-en-productos-plugin-advanced-custom-fields */
/* mostrar el campo en la TIENDA  */
add_action( 'woocommerce_after_shop_loop_item', "dcms_caracteristicas_producto", 8 );
function dcms_caracteristicas_producto() {
  // Recuerda hacemos referencia al nombre del campo NO a a la etiqueta   
  if (function_exists('get_field')){
    echo "<p>S/ ". get_field('precio_soles_gamatel')."</p>"; 
  }
}

 

Woocommerce : Mostrar precios en diferentes monedas

https://unidadvirtual.com/woocommerce-mostrar-precios-en-diferentes-monedas

Son las monedas que se muestran en la ficha de productos de la tienda 

Se a usado el plugin CURCY - Multi Currency for WooCommerce 

→ Al instalar el Pugin se muestra en el panel de wordpress en el lado  izquierdo como Multi Currency

Pagina Checkout (Finalizar Compra)

Función para cambiar cualquier texto de Woocommerce

# Esta función sirve para cambiar cualquier texto de Woocommerce
// https://wordpressux.com/como-cambiar-textos-de-woocommerce/

function new_texts( $translated_text, $text, $domain ) {
     
switch ( $translated_text ) {
    case 'Detalles de facturación' : /*Texto original*/
        $translated_text = __( 'Ingresa tus datos de Pago', 'woocommerce' ); /*Nuevo texto*/
    break;      
    }
    return $translated_text;
     
}
 
add_filter( 'gettext', 'new_texts', 20, 3 );

 

Formulario Contactenos

Configurar SMTP - PHPMailer contactenos

Usando Code snippets (Fragmentos de código) 

//https://wordpress.stackexchange.com/questions/344009/how-to-use-phpmailer-in-a-function-in-wordpress
//https://decodecms.com/formulario-de-contacto-sin-plugins-en-wordpress/
// 
//add_action( 'phpmailer_init', 'send_smtp_email', 10, 1);
//

//  ------- INICIO  Configuracion send_smtp_email
//  Hook para PHPMailer
add_action( 'phpmailer_init', 'send_smtp_email');

// si hay un error revisar el archivo debug.log que se encuentra en la ruta =  wp-content/debug.log 
add_action( 'wp_mail_failed', function ( $error ) {
    error_log( $error->get_error_message() );
} );



// function send_smtp_email - En esta función llamamos al parámetro isSMTP() para realizar la conexión SMTP (Simple Mail Transfer Protocol).
// Se establece el SMTPAuth en verdadero con el fin de permitir la autenticación segura para enviar mensajes de correo.

function send_smtp_email( $phpmailer ){
	
    $phpmailer->isSMTP();  //Configura PHPMailer para usar SMTP para enviar correos electrónicos.
    $phpmailer->Host = 'mail.gamatel-unlock.com';	
    $phpmailer->SMTPAuth = true; // Force it to use Username and Password to authenticate
    $phpmailer->Port = 465;	   
    $phpmailer->Username = 'ventas@gamatel-unlock.com';
    $phpmailer->Password = 'Infantemarina$01$marcos-pesquero-$2024';
    $phpmailer->SMTPSecure = 'ssl';   // Choose SSL or TLS, if necessary for your server
    $phpmailer->From = 'ventas@gamatel-unlock.com';
    //$phpmailer->FromName='ventas@gamatel-unlock.com';
}
//  ------- FIN  Configuracion send_smtp_email
//  

//https://unidadvirtual.com/wordpress-admin-post-process-form-y-admin-post-nopriv-process-form
//https://unidadvirtual.com/wordpress-que-es-admin-post-php
//
//Hook admin-post
//Recuerda hay una sentencia en la plantilla del formulario contactenos que se trabaja 
 //   con el archivo admin-post.php y este archivo trabaja   en conjunto con un campo oculto que tiene como nombre 
 //   action cuyo valor es = process_form 
 //   
add_action( 'admin_post_process_form', 'send_mail_data' );  //Usuarios registrados
add_action( 'admin_post_nopriv_process_form', 'send_mail_data' ); //Visitantes  

// Aqui es donde se procesa el formulario 
function send_mail_data() {	
	//https://unidadvirtual.com/wordpress-que-son-los-nonces
   if ( isset( $_POST['nombre_del_nonce_formulario_1'] ) && wp_verify_nonce( $_POST['nombre_del_nonce_formulario_1'], 'accion_verificar_formulario_nonce_1' ) ) {
	   
	// Aquí es donde podemos actuar de forma segura
	$name = sanitize_text_field($_POST['name']);
	$email = sanitize_email($_POST['email']);
	$message = sanitize_textarea_field($_POST['message']);	   
	//Cuerpo del mensaje   
	$saludo .= "Hola ".$name . "\n\n";
	$saludo .= "su comentario es:" . "\n";   
	$saludo .= $message ."\n\n" ;
	$saludo .= "Gracias Por su Consulta y/o Respuesta Estaremos analizandolo para su Aceptación." . "\n\n";	
	$saludo .= "Gracias por todo." . "\n\n" ;
	$saludo .= "Sinceramente," . "\n\n" ;  
	$saludo .= "Distribuidores de Boxes - Dongles - Cables". "\n";   	   
	$saludo .= "https://gamatel-unlock.com/" . "\n";   	      
	$saludo .= "Correo :  ventas@gamatel-unlock.com" . "\n";   	         
   
	$subject = "Formulario de contacto"; //asunto
	
	$headers[] = "Content-type: text/plain; charset=utf-8";  	
    $headers[] = "From: Ventas Gamatel-unlock <ventas@gamatel-unlock.com>"; //From: donde proviene el mensaje
	$headers[]=  "Cc: Ventas Gamatel-unlock <ventas@gamatel-unlock.com>"; // Cc: estamos enviando el mensaje con copia a otro destinatario 
    //$headers[]= "Bcc: Persona2 <persona2@midominio.com>"; // Bcc: enviamos de forma oculta a un segundo destinatario		
	   
	$sendmail = wp_mail( $email, $subject, $saludo, $headers);
	
	if ( $sendmail ) {
		// si el correo se manda sin errores redirigimos al usuario a una página de gracias
		
		//wp_redirect( home_url("/contactenos")."?sent=".$sendmail ); 
		//wp_safe_redirect ( home_url("/contactenos")."?sent=".$sendmail  ); 
		//
		// https://unidadvirtual.com/wordpress-wp-safe-redirect-vs-wp-redirect
		//wp_safe_redirect realiza algunas comprobaciones de seguridad adicionales para asegurarse 
		//de que la URL de redirección sea segura antes de realizar la redirección.
		//
		wp_safe_redirect ( home_url("/gracias-por-su-consulta")."?sent=".$sendmail ."&email=". $email ); 
	}
	else {
		//echo "hubo un error al enviar el email";
		wp_safe_redirect ( home_url("/contactenos")."?sent=".$sendmail  );
		// si hay algún error al mandar el correo redirigimos al usuario de nuevo al formulario
	} // fin if ( $sendmail ) 
	
	   }  // Fin seguridad wp_verify_nonce
	
} // FIn function send_mail_data	

 

Articulo : 101 - Veces Leidas
Compartir Articulo:

Artículos Relacionados

×

¡Apóyame suscribiéndote a mi canal!

Tutoriales sobre Diseño Web