SmythSys IT Consulting

Código para añadir una página de Mis Productos en WooCommerce

Para una de las webs que estábamos desarrollando esta semana, necesitábamos crear una página para que los clientes pudieran ver sus productos.  Hemos encontrado un código que realiza esta función y os lo queremos dejar aquí para que lo uséis.

Código para añadir una página de Mis Productos en WooCommerce.

Lo primer es mencionar la fuente, el código lo encontramos aquí.

Para activar el código tienes dos maneras:

  • Ponerlo en el fichero functions.php de tu plantilla. Solo te recomiendo que hagas esto si has creado una plantilla hija. De no ser así, al actualizar la plantilla se te borrará el código modificado. Ponedlo antes de ?>
  • Usar un plugin para poner códigos personalizados. Como el que mencionamos en este artículo.

El código que hay que  poner es :

/**
 * @snippet       Display All Products Purchased by User via Shortcode - WooCommerce
 * @how-to        Watch tutorial @ https://businessbloomer.com/?p=19055
 * @sourcecode    https://businessbloomer.com/?p=22004
 * @author        Rodolfo Melogli
 * @compatible    Woo 3.4.5
 */
// Note: this will only return purchased products for completed and processing orders
add_shortcode( 'my_products', 'bbloomer_user_products_bought' );
function bbloomer_user_products_bought() {
global $product, $woocommerce, $woocommerce_loop;
$columns = 3;
$current_user = wp_get_current_user();
$args = array(
    'post_type' => 'product',
    'post_status' => 'publish',
    'posts_per_page' => -1
);
$loop = new WP_Query($args);
ob_start();
woocommerce_product_loop_start();
while ( $loop->have_posts() ) : $loop->the_post();
$theid = get_the_ID();
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $theid ) ) {
wc_get_template_part( 'content', 'product' );
}
endwhile;
woocommerce_product_loop_end();
woocommerce_reset_loop();
wp_reset_postdata();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';

}

/**
* @snippet       Display All Products Purchased by User via Shortcode - WooCommerce
* @how-to        Watch tutorial @ https://businessbloomer.com/?p=19055
* @sourcecode    https://businessbloomer.com/?p=22004
* @author        Rodolfo Melogli
* @compatible    Woo 3.4.5
*/
// Note: this will only return purchased products for completed and processing orders
add_shortcode( 'my_products', 'bbloomer_user_products_bought' );
function bbloomer_user_products_bought() {
global $product, $woocommerce, $woocommerce_loop;
$columns = 3;
$current_user = wp_get_current_user();
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1
);
$loop = new WP_Query($args);
ob_start();
woocommerce_product_loop_start();
while ( $loop->have_posts() ) : $loop->the_post();
$theid = get_the_ID();
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $theid ) ) {
wc_get_template_part( 'content', 'product' );
}
endwhile;
woocommerce_product_loop_end();
woocommerce_reset_loop();
wp_reset_postdata();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
}
Después puedes usar el shortcode [my_products] en cualquier sitio de WordPress para mostrar los productos.
Aquí tenéis una versión del código que antes realiza una búsqueda en la base de datos y comprueba también si hay productos duplicados (porque unos incluyeron otros).

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).