WooCommerce : Listado todas las Funciones Implementadas en mi Web
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