Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

322
Vistas
WooCommerce: muestra cuántas personas tienen un producto en su carrito con un mensaje condicional

Estoy usando Mostrar cuántas personas agregaron un producto en su carrito actual para mostrar cuántas personas agregaron un producto en su carrito actual en las páginas Tienda y Producto único; similar a lo que ves en tiendas como Etsy.

El fragmento funciona tal como está, pero sería bueno cambiar condicionalmente el mensaje dependiendo de si hay 1 usuario frente a varias personas (es decir, "1 persona tiene esto en su carrito en este momento" frente a "10 personas tienen esto en sus carritos correcto ahora.").

Si alguien tiene alguna sugerencia sobre la mejor manera de manejarlo, se lo agradecería. :)

 function show_no_of_people_added_in_cart(){ global $wpdb, $product; $in_basket = 0; $wc_session_data = $wpdb->get_results( "SELECT session_key FROM {$wpdb->prefix}woocommerce_sessions" ); $wc_session_keys = wp_list_pluck( $wc_session_data, 'session_key' ); if( $wc_session_keys ) { foreach ( $wc_session_keys as $key => $_customer_id ) { // if you want to skip current viewer cart item in counts or else can remove belows checking if( WC()->session->get_customer_id() == $_customer_id ) continue; $session_contents = WC()->session->get_session( $_customer_id, array() ); $cart_contents = maybe_unserialize( $session_contents['cart'] ); if( $cart_contents ){ foreach ( $cart_contents as $cart_key => $item ) { if( $item['product_id'] == $product->get_id() ) { $in_basket += 1; } } } } } if( $in_basket ) echo '<div class="in-basket">' . sprintf( __( '%d people have this in their cart', 'text-domain' ), $in_basket ) . '</div>'; } add_action( 'woocommerce_after_shop_loop_item_title', 'show_no_of_people_added_in_cart', 11 ); add_action( 'woocommerce_single_product_summary', 'show_no_of_people_added_in_cart', 21 );
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede usar para esta función de situaciones _n

El código después de cambiar

 function show_no_of_people_added_in_cart(){ global $wpdb, $product; $in_basket = 0; $wc_session_data = $wpdb->get_results( "SELECT session_key FROM {$wpdb->prefix}woocommerce_sessions" ); $wc_session_keys = wp_list_pluck( $wc_session_data, 'session_key' ); if( $wc_session_keys ) { foreach ( $wc_session_keys as $key => $_customer_id ) { // if you want to skip current viewer cart item in counts or else can remove belows checking if( WC()->session->get_customer_id() == $_customer_id ) continue; $session_contents = WC()->session->get_session( $_customer_id, array() ); $cart_contents = maybe_unserialize( $session_contents['cart'] ); if( $cart_contents ){ foreach ( $cart_contents as $cart_key => $item ) { if( $item['product_id'] == $product->get_id() ) { $in_basket += 1; } } } } } if( $in_basket ) echo '<div class="in-basket">' . sprintf(_n( '%s person have this in their cart', '%s people have this in their cart', $in_basket, 'text-domain' ), number_format_i18n($in_basket ) ) . '</div>'; } add_action( 'woocommerce_after_shop_loop_item_title', 'show_no_of_people_added_in_cart', 11 ); add_action( 'woocommerce_single_product_summary', 'show_no_of_people_added_in_cart', 21 );
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda