Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.
Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.
Etiquetado: Custom Work
Este tema contiene 4 respuestas, tiene 2 voces.
Última actualización por rogerM-13 hace 1 año, 9 meses.
Asistido por: Carlos Rojas.
Autor | Entradas |
---|---|
marzo 5, 2023 en 10:35 am #13172771 | |
rogerM-13 |
Hola! Estoy haciendo una web que utiliza Events Calendar pro con tickets plus y woocommerce. El tema es que necesitamos el control de las urls y de plantillas customizadas. Con woocommerce tenemos el control de ambas. Así que lo que hemos hecho es que los eventos son "invisibles" y dentro de cada producto se muestra la información de un evento y sus tickets. Así que el workflow es: Creas el evento y sus tickets. Creas un producto y le asignas el evento relacionado en el selector de ACF. Pero entonces añadí wpml para que la web sea en catalán principalmente y lo que pasó es que se generan productos perfectamente pero sin idioma, de manera que si se quiere editar el producto no te sale en el repositorio de productos de wordpresss. (adjunto 2) He estado investigando y veo que el tema es que no se genera la fila en la tabla wp_icl_translations. (adjunto 3) Con la ayuda de chatGPT he visto que hay varios hooks o funciones para atribuirle a un producto el idioma principal, pero al meterlo en mi functions.php de mi child theme, me sale error fatal porqué, según el php_errors.log no existe aun la función de wpml. En este caso he probado las siguientes entre otras: wpml_set_element_language_details() o wpml_update_post_language() (aunque esta última creo que ya no se utiliza) Mi código simplificado sería este: // Hook de events calendar en el momento de guardar el evento add_action( 'tribe_events_event_save', 'bbloomer_create_simple_product_automatically_PROVA', 9 ); function bbloomer_create_simple_product_automatically_PROVA( $event_id ) { //Cogemos el ACF de producto relacionado. Si existe no hacemos nada por ahora(porqué os mando el codigo simplificado, pero aqui se actualizara el producto relacionado con la info del evento, el codigo ya me funciona bien) $producte_relacionat = get_field('producte_relacionat'); if ( ! $producte_relacionat && $event_id ) { // Creamos el nuevo producto, le asignamos el nombre del evento y guardamos $product = new WC_Product_Simple(); $product->set_name( get_the_title( $event_id ) ); $product->save(); // Cogemos el id del nuevo producto $new_product_id = $product->get_id(); error_log('guardat'); error_log('aqui_estem'); // Asignamos al evento el producto relacionado y escribimos en el campo "producte_relacionat_id" el ID del producto para ver que id tiene el nuevo producto relacionaddo update_field('producte_relacionat', $new_product_id , $event_id ); update_field('producte_relacionat_id', $new_product_id , $event_id ); // Aqui lo que chatgpt me dice que utilice para añadir el idioma 'ca' pero que me da error fatal // Set WPML language details after WPML has loaded add_action( 'wp_loaded', function() use ( $new_product_id ) { wpml_set_element_language_details( $new_product_id, 'post_product', null, 'ca', true ); } ); } } Como sería la forma para hacer que se le atribuya al nuevo producto el idioma por defecto de la web o uno especifico? Si no también he pensado (y probado pero no me funciona) que en vez de hacerlo todo aquí, en este hook, se podría crear otro hook que al guardar un producto de woocommerce le añada el idioma si no lo tiene. Al final solo se utilizará un idioma (catalan) así que me serviría que cada vez que se crea un producto se le atribuye el idioma 'ca'. Otro dato que quizás ayude es: He buscado info pero no he encontrado nada, por eso he ido a chatGPT antes de molestaros pero no hay manera de que me funcione. Espero que me podáis ayudar porqué es bastante vital que funcione para el cliente! Muchísimas gracias!!!!! PD: Otro tema que acabo de ver que no se si puede tener relación es que cuando he ido a buscar la info de depuración para enviaroslo en este ticket, he visto que me dice que no tengo instalado el WooCommerce Multilingual (adjunto 7) pero en verdad si que está instalado (adjunto 8) |
marzo 6, 2023 en 10:01 am #13176999 | |
Carlos Rojas Supporter
Idiomas: Inglés (English ) Español (Español ) Zona horaria: Europe/Madrid (GMT+01:00) |
Hola, La respuesta a su problema necesita de código personalizado y por lo tanto -desafortunadamente- cae fuera del alcance de nuestros servicio de soporte. Sin embargo le recomiendo que le eche un vistazo a nuestro listado de hooks: https://wpml.org/documentation/support/wpml-coding-api/wpml-hooks-reference/ En caso de necesitar más asistencia le recomiendo que considere consultar a uno de nuestros partners certificados en este enlace: https://wpml.org/contractors/ Ellos estarán más que contentos de poder ayudarle. Saludos, |
marzo 6, 2023 en 10:26 am #13177467 | |
rogerM-13 |
Hola! Gracias por contestar! No estoy pidiendo el código definitivo customizado para mi. Estoy pidiendo, a poder ser, esto: Revisaré la página que has mandado con el listado de todos los hooks pero si puedes ser más preciso con alguno que me ayude a solucionar los puntos anteriores lo agradecería! Muchas gracias! |
marzo 6, 2023 en 10:37 am #13177519 | |
Carlos Rojas Supporter
Idiomas: Inglés (English ) Español (Español ) Zona horaria: Europe/Madrid (GMT+01:00) |
Hola, Lo siento pero no puedo ser más específico porque estamos hablando de código personalizado y como mencionaba en mi mensaje anterior, cae fuera del alcance de nuestro servicio de soporte. Saludos, |
marzo 6, 2023 en 10:39 am #13177521 | |
rogerM-13 |
Vale, pues seguiré investigando, gracias! |