Skip Navigation

This thread is resolved. Here is a description of the problem and solution.

Problem:
The client is using the My Listing theme, which is not multilingual compatible, and is encountering issues when trying to duplicate posts with WPML. The client has used a snippet from our documentation to duplicate posts, but it's not copying all the data as Polylang does. Additionally, the client is struggling to adapt the code to only duplicate 'job_listing' post types, as it currently duplicates all post types.

Solution:
We recommend visiting our WPML hooks guide for assistance with custom code, as this falls outside the scope of our standard support service. If further help with the code is needed, the client can contact one of our certified partners at WPML contractors.

Additionally, we suggest using WPML's interface to manually duplicate content in bulk by following these steps: How to duplicate pages and posts in bulk. Although this option does not execute upon post creation and must be done manually, it may be a valid solution depending on the scenario.

If this solution does not seem relevant, please open a new support ticket in our support forum.

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.

Hoy no hay asistentes de soporte disponibles en el foro Spanish. Siéntase libre de enviar sus tiques y les daremos trámite tan pronto como estemos disponibles en línea. Gracias por su comprensión.

Etiquetado: 

This topic contains 23 respuestas, has 2 mensajes.

Last updated by Carlos Rojas hace 4 meses, 1 semana.

Assisted by: Carlos Rojas.

Autor Entradas
noviembre 28, 2023 a las 12:30 pm #14939239

ck-iRiDiuM

Hola, en mi web, uso el theme My Listing, el cual no es compatible con multilenguaje. Aún así, hay usuarioa que se arriesgan intentar hacerlo funcionar en m ás de un idioma. Según he podido leer en el foro de soporte de my theme, la mayoría de usuarios están utilizando Polylang.

Yo me he atrevido con WPML, y tengo varios problemas.

Utilizo este snippet: https://wpml.org/wpml-hook/wpml_admin_make_post_duplicates/

El problema es cuando se duplica el post publicado, faltan datos. Usando Polylang los copia perfecto, todos los campos, en cambio con WPML no.

También tengo un problema al adaptar el código para que sólo duplique con el post-type='job_listing', y no con página y entradas, parece que no detecta la distinción:

/**
* WPML
* Duplicar al publicar
*/

add_action('wp_insert_post', 'my_duplicate_on_publish');
function my_duplicate_on_publish($post_id) {
global $post;

// No guardar para autosave
if (is_null($post)) {
return $post_id;
}

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}

// No guardar para revisiones
if (isset($post->post_type) && $post->post_type == 'revision') {
return $post_id;
}

// Necesitamos esto para evitar recursión, ver add_action al final
remove_action('wp_insert_post', 'my_duplicate_on_publish');

// Verificar si la publicación tiene traducciones o es de tipo 'job_listing'
$is_translated = apply_filters('wpml_element_has_translations', '', $post_id, $post->post_type);

// Verificar si el tipo de post es 'job_listing'
if (!$is_translated && $post->post_type == 'job_listing') {
do_action('wpml_admin_make_post_duplicates', $post_id);
}

// Debe volver a engancharse, ver remove_action más arriba
add_action('wp_insert_post', 'my_duplicate_on_publish');
}

He agregado && $post->post_type == 'job_listing' pero nada, duplica todos los post-types.

Polylang tam bién dispone de snippet para auto duplicar al publicar, y si duplica todos los campos sin olvidarse nada además de distinguir entre el post-type job_listing.

Cómo puedo abordar este problema?

Gracias

Todo esto lo estoy testeando en un stagingsite: hidden link

noviembre 28, 2023 a las 1:53 pm #14940459

Carlos Rojas
Supporter

Languages: Inglés (English ) Español (Español )

Timezone: Europe/Madrid (GMT+02:00)

Hola,
Muchas gracias por contactarnos

Esta solución contiene código personalizado y el código personalizado cae fuera del alcance de nuestro servicio de soporte.

Si desea ajustar esta solución le recomiendo que visite nuestra guía de hooks: https://wpml.org/documentation/support/wpml-coding-api/wpml-hooks-reference/ y en caso de necesitar más asistencia con el código puede contactar con alguno de nuestros partners certificados en el siguiente apartado: https://wpml.org/contractors/

Nota: Utilizando la interfaz de WPML puede duplicar en lote el contenido siguiendo estos pasos: https://wpml.org/documentation/translating-your-contents/displaying-untranslated-content-on-pages-in-secondary-languages/#how-to-duplicate-pages-and-posts-in-bulk aunque esta opción no se ejecuta al crear un post, sino que debe hacerlo de manera manual. Sin embargo, en dependencia del escenario, puede ser una solución válida.

Muchas gracias por su comprensión!
Saludos,
Carlos

noviembre 28, 2023 a las 3:02 pm #14941183

ck-iRiDiuM

Hola Carlos, gracias por tu respuesta.

Sin utilizar código y usando la opción de duplicar, faltan datos que no se duplican. En cambio con Polylang si.

Soy consciente de que mi theme no es compatible con multilenguaje, pero, si polylang los duplica, deduzco que WPML también debería hacerlo.

El hecho de usar el código que vosotros proporcionáis, es para automatizar la tarea. Pero me vale, en principio, de la forma manual, siempre y cuando duplique correctamente.

En manual, qué debería hacer para lograr el duplicado completo?

Gracias

noviembre 28, 2023 a las 10:12 pm #14944933

ck-iRiDiuM

Hola de nuevo. He probado la opción de duplicar manualmente y quitando de 2 campos, los duplica todos. Bien.

Pero por que no hace el mismo proceso usando el codigo sin editar que proporcionáis?
https://wpml.org/wpml-hook/wpml_admin_make_post_duplicates/

No duplica de la misma forma.

noviembre 29, 2023 a las 8:39 am #14947245

Carlos Rojas
Supporter

Languages: Inglés (English ) Español (Español )

Timezone: Europe/Madrid (GMT+02:00)

Hola,

Tenga en cuenta que el hook para duplicar no cuenta con toda la configuración con la que dispone al duplicar desde la interfaz de WPML, sino que se trata de una funcionalidad y el resto debe ponerlo el desarrollador.

Con respecto a la duplicación manual, puede decirme cuales son los dos campos que no se duplican? Sospecho que solamente falta configurar dichos campos para que sean traducibles 🙂

noviembre 29, 2023 a las 12:16 pm #14950673

ck-iRiDiuM

Hola de nuevo. Realizando la duplicación del español al inglés, cuando edito, duplica correctamente, solo le falta un campo de ubicación o dirección de mapas, ver img-1.

Si entro en el duplicado de inglés, verifico que ese campo está vacío, hay que clicar para expandir el campo y mapa. Ver img 2 y 3. Pensé que esto pudiera ser el problema, el hecho de que sea un botón a la hora de completar el campo, pero otros campos como los de las redes sociales funcionan del mismo modo y se han duplicado sin problemas, por lo que no creo que esto sea uin problema.

Y finalmente puedo apreciar que, cuando duplica las categorías "grow shops", etiquetas "pagos con tarjeta" ... las sincroniza, eso es perfecto. Pero no lo hace correctamente con el tipo de tienda "tiendas fisicas" ver img 4

Hasta aquí, no es totalmente incompatible el theme que utilizo.

Gracias

WPML-duplicar-4.jpg
WPML-duplicar-3.jpg
WPML-duplicar-2.jpg
WPML-duplicar-1.jpg
noviembre 29, 2023 a las 12:24 pm #14950799

Carlos Rojas
Supporter

Languages: Inglés (English ) Español (Español )

Timezone: Europe/Madrid (GMT+02:00)

Hola,

Por favor compruebe si dicho campo está configurado para copiarse siguiendo los pasos descritos en estas guías:
- https://wpml.org/documentation/getting-started-guide/translating-custom-fields/
- https://wpml.org/documentation/related-projects/translate-sites-built-with-acf/

noviembre 29, 2023 a las 6:16 pm #14954873

ck-iRiDiuM

He mirado la configuración y he puesto en TRADUCIR las opciones que creo pudieran ser el campo que no duplica. Pero he testeado varias veces y sigue sin copiar el campo de la dirección.

WPML-duplicar-7.jpg
WPML-duplicar-6.jpg
WPML-duplicar-5.jpg
noviembre 30, 2023 a las 8:57 am #14959493

Carlos Rojas
Supporter

Languages: Inglés (English ) Español (Español )

Timezone: Europe/Madrid (GMT+02:00)

Hola,

Para que se copie la información del campo debe configurarlo para que se copie, no para que se traduzca, pues su objetivo es copiarlo para mostrar la misma información en todos los idiomas.

Nota: Por favor cambie solamente la configuración de los campos personalizados. Veo en las capturas de pantalla que ha cambiado la configuración de 'tipos de entrada' y 'terms meta' lo cual es incorrecto y puede provocar problemas en el sitio.

noviembre 30, 2023 a las 12:54 pm #14962703

ck-iRiDiuM

Hola Carlos, exacto, no se que he tocado pero ahora al editar posts que publique con esas configuraciones me da error:

Fatal error: Uncaught Error: Object of class WP_Post could not be converted to string in /home/customer/www/staging4.growradar.com/public_html/wp-content/plugins/sitepress-multilingual-cms/sitepress.class.php:1858 Stack trace: #0 /home/customer/www/staging4.growradar.com/public_html/wp-content/plugins/sitepress-multilingual-cms/inc/template-functions.php(1154): SitePress->get_element_trid(Object(WP_Post), NULL) #1 /home/customer/www/staging4.growradar.com/public_html/wp-includes/class-wp-hook.php(324): wpml_element_has_translations_filter(false, Object(WP_Post), NULL) #2 /home/customer/www/staging4.growradar.com/public_html/wp-includes/plugin.php(205): WP_Hook->apply_filters(false, Array) #3 /home/customer/www/staging4.growradar.com/public_html/wp-content/themes/my-listing-child/functions.php(120): apply_filters('wpml_element_ha...', false, Object(WP_Post), NULL) #4 /home/customer/www/staging4.growradar.com/public_html/wp-includes/class-wp-hook.php(324): my_duplicate_on_publish(5919, Object(WP_Post), true) #5 /home/custom in /home/customer/www/staging4.growradar.com/public_html/wp-content/plugins/sitepress-multilingual-cms/sitepress.class.php on line 1858
Ha habido un error crítico en esta web.

Ahora me resulta imposible borrar los listados que he creado para pruebas. Siempre me da el mismo error.

He ido a WPML > Soporte > Solucionador de problemas > Y he usado algunas de las opciones.

Aún así no sé que tipo de campo personalizado debo cambias a "Copiar".

Gracias por tu tiempo

noviembre 30, 2023 a las 1:09 pm #14962849

ck-iRiDiuM

Lo del error solucionado, no quité el código que estaba probando en mi archivo functions.php.

Ya he configurado las opciones como estaban antes, y el campo personalizado lo he marcado como "copiar". Aun que no sé muy bien que campo es el correcto.

En la imagen he señalado en verde lo de copiar. Pero más abajo en púrpura se generan:

wc_paid_listings_order_placed_handler_307

Qué son?

Gracias

WPML-duplicar-8.jpg
noviembre 30, 2023 a las 1:29 pm #14963125

ck-iRiDiuM

Pero sigue sin duplicar la dirección y sin sincronizar el tipo de tienda que debería ser "Phisical Stores".

Por lo demás, duplica y sincroniza correctamente.

WPML-duplicar-10.jpg
WPML-duplicar-9.jpg
noviembre 30, 2023 a las 2:18 pm #14963681

Carlos Rojas
Supporter

Languages: Inglés (English ) Español (Español )

Timezone: Europe/Madrid (GMT+02:00)

Hola,

Para identificar el campo que debe configurar lo mejor es que utilice el inspector del navegador y generalmente el ID del campo es el que se muestra en el listado de campos personalizados.

noviembre 30, 2023 a las 2:32 pm #14963901

ck-iRiDiuM

No existe tal campo en la Configuración de WMPL, creo que no lo está detectando. No sé como proceder.

Lo único que veo de ese campo es:

<div data-repeater-list="job_location">

No veo nada relacionado que aparezca en la configuración de WPML Campos personalizados.

noviembre 30, 2023 a las 2:39 pm #14964025

ck-iRiDiuM

Acabo de descubrir esta sección, que hace referencia a lo que estamos hablando. Edité directamente el post-type= Tipo de tienda Phisical Stores y pude verlo.

Creo que está mal configurada. Y estoy perdido

WPML-duplicar-11.jpg
This ticket is now closed. If you're a WPML client and need related help, please open a new support ticket.