/** * ICEA — Certificaciones: asesoría previa en lugar de compra directa. * * A una certificación nadie se inscribe en un clic: primero hay una * explicación y una valoración con un asesor. Por eso, en las tarjetas de * los cursos que pertenecen a las categorías listadas en $categorias se * retira el precio y el botón "Añadir al carrito", y en su lugar se pone * un botón CONTACTAR ASESOR que abre WhatsApp con el nombre del curso ya * escrito en el mensaje. * * Se engancha al filtro tutor_course_loop_price de Tutor LMS, así que * aplica en TODAS las vistas donde salga la tarjeta (catálogo, archivo de * categoría, buscador), no solo en /course-category/certificaciones-icea/. * * Reglas de mantenimiento: * - Sumar otra categoría: agregar su slug en icea_asesor_categorias(). * - Que un curso conserve el precio a la vista (los que ya tienen fecha): * agregar su ID de curso en icea_asesor_con_precio(). * - El alumno ya inscrito no se toca: sigue viendo su botón de continuar. * - Para revertir: borrar este bloque completo. * * Ojo: se usa wp_get_post_terms y NO get_the_terms, porque el filtro de * categorías de más arriba oculta las modalidades y dejaría de ver el slug * "certificaciones-icea". */ // Categorías que requieren asesoría antes de inscribirse. function icea_asesor_categorias() { return array( 'certificaciones-icea', 'certificaciones-conocer', ); } // IDs de cursos que SÍ conservan el precio visible (los que ya tienen fecha). // Ejemplo: return array( 264, 310 ); function icea_asesor_con_precio() { return array(); } // Número de WhatsApp de ventas, en formato internacional sin signos. function icea_asesor_whatsapp() { return '5215534564403'; } // ¿Este curso necesita asesor? function icea_curso_con_asesor( $course_id ) { $slugs = wp_get_post_terms( $course_id, 'course-category', array( 'fields' => 'slugs' ) ); if ( is_wp_error( $slugs ) || empty( $slugs ) ) { return false; } return (bool) array_intersect( icea_asesor_categorias(), $slugs ); } // ¿El alumno ya está inscrito? Si sí, su tarjeta no se toca. // Se comprueba por las dos vías porque el método cambió de lugar entre // versiones de Tutor LMS. function icea_alumno_inscrito( $course_id ) { if ( ! is_user_logged_in() ) { return false; } $user_id = get_current_user_id(); if ( function_exists( 'tutor_utils' ) && method_exists( tutor_utils(), 'is_enrolled' ) ) { return (bool) tutor_utils()->is_enrolled( $course_id, $user_id ); } if ( class_exists( '\Tutor\Models\EnrollmentModel' ) ) { return (bool) \Tutor\Models\EnrollmentModel::is_enrolled( $course_id, $user_id ); } return false; } // Enlace de WhatsApp con el nombre del curso ya escrito. function icea_url_asesor( $course_id ) { $titulo = wp_strip_all_tags( get_the_title( $course_id ) ); $texto = 'Hola. Me interesa la certificación ' . $titulo . '. ¿Pueden darme más información?'; return 'https://api.whatsapp.com/send/?phone=' . icea_asesor_whatsapp() . '&text=' . rawurlencode( $texto ); } // Sustituye el pie de la tarjeta (precio + carrito) por el botón de asesor. add_filter( 'tutor_course_loop_price', 'icea_tarjeta_contactar_asesor', 20, 2 ); function icea_tarjeta_contactar_asesor( $html, $course_id = 0 ) { if ( ! $course_id ) { $course_id = get_the_ID(); } if ( ! $course_id || ! icea_curso_con_asesor( $course_id ) ) { return $html; } if ( icea_alumno_inscrito( $course_id ) ) { return $html; } $boton = 'CONTACTAR ASESOR'; // Cursos con fecha: conservan el precio a la izquierda y el botón debajo. if ( in_array( (int) $course_id, array_map( 'intval', icea_asesor_con_precio() ), true ) && function_exists( 'wc_get_product' ) && function_exists( 'tutor_utils' ) ) { $product_id = tutor_utils()->get_course_product_id( $course_id ); $product = $product_id ? wc_get_product( $product_id ) : false; if ( $product ) { return '
' . $product->get_price_html() . '
' . $boton . '
'; } } // Certificaciones sin fecha: solo el botón. return '
' . $boton . '
'; }