Avisos
Vaciar todo

Shortcode woocomerce  

 
Felipe
 Felipe
Usuario activo

Hola! 

Me podrían ayudar para hacer lo siguiente por favor:

Necesito mostrar a cada usuario la cantidad de pedidos realizados por él. El metadato que necesito mostrar es "woo_order_count", pero no sé cómo hacerlo, se me ocurre que podría hacer un snippet para crear un shortcode y así poder agregarlo a cualquier sección de la web donde lo necesite.

Estoy intentando con el siguiente snippet:

$cliente = new WC_Customer (get_current_user_id());
$nombre = $cliente->get_first_name();
add_shortcode ('nombre', function () {
       $cliente = new WC_Customer (get_current_user_id());
       return ucwords ($cliente->get_first_name());
}); 

 

Ese es para obtener el nombre del usuario y funciona perfecto, donde el shortcode sería [nombre], pero cuando cambio "first_name" por "woo_order_count" en la segunda y en la quinta línea y dar al botón de guardar el snippet, la página web se cae, indica que hay un error. 

 

Me podrían dar una mano para saber cómo hacer esto por favor?

 

Gracias!

Contenido solo visible a usuarios registrados

Citar
Respondido : 27/10/2022 1:43 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Felipe.

Podrías compartirnos el código completo.

Por lo que deduzco tendría que ser algo como esto:

add_shortcode ('nombre', function () {
if(is_user_logged_in())
{
$my_user_id = get_current_user_id();
$customer = woo_order_count( $my_user_id );
$statuses = array('processing','expedier','completed', 'refunded', 'pending', 'on-hold');
global $count_real;
$count_real = $customer->woo_order_count($statuses);
}
});

 

Nota: en el foro no damos soporte a códigos personalizados.

 

Un saludo

 

ResponderCitar
Respondido : 27/10/2022 2:40 pm

Felipe
 Felipe
Usuario activo

Gracias Pepe, ese código sí me funcionó, solo que si quiero contabilizar solo los pedidos en un status (por ejemplo "processing") no los filtra, siempre me arroja el mismo número, que creo que son los completados. Hay algo mal con el código o es de mi web?

Gracias

ResponderCitar
Respondido : 27/10/2022 3:12 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Felipe.

Podrías probar con esto:

global $count_real;
$args = array(
'customer_id' => $my_user_id_itp,
'post_status' => 'any',
'post_type' => 'shop_order',
'return' => 'ids',
'limit' => -1
);
$count_real = 0;
$count_real = count( wc_get_orders( $args ) );

 

Un Saludo

ResponderCitar
Respondido : 27/10/2022 3:36 pm

Cursos Gratuitos WordPress

Felipe
 Felipe
Usuario activo

@pepesoler por algún motivo me generan un error ambos códigos, como que hay problemas con elementor... existirá un plugin que haga lo que necesito?

No logro encontrar uno que me lo permita

Gracias

ResponderCitar
Respondido : 27/10/2022 7:34 pm
Argenis
 Argenis
Soporte CMS Webempresa Moderator

Hola Felipe,

Es un poco complicado por que es algo personalizado, sin embargo verifica si con estos te funciona:

https://fr.wordpress.org/plugins/woo-customers-order-history/

https://fr.wordpress.org/plugins/purchased-items-column-woocommerce/

https://fr.wordpress.org/plugins/order-status-history-for-woocommerce/

Si no funciona ninguno recuerda que nuestros colaboradores también podrían ayudarte creando el código a medida:

https://www.webempresa.com/directorio-colaboradores.html

Un saludo 🖐️ 

ResponderCitar
Respondido : 27/10/2022 7:53 pm

wpdoctor-revisa-la-salud-de-tu-wordpress