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 el foro 6 días a la semana, durante 22 horas por día.

Etiquetado: 

This topic contains 9 respuestas, has 2 mensajes.

Last updated by Carlos Rojas hace 12 meses.

Assigned support staff: Carlos Rojas.

Autor Publicaciones
octubre 9, 2018 a las 4:13 pm

jordi

Tengo tres idiomas configurados con WPML en mi página web: catalán (principal), español e inglés. Cuando activo el plugin "String Translation", la web no funciona como debería hacerlo.

Cuando el plugin "String Translation" está activado e intento acceder a la página single de un custom post type, WordPress me retorna un 404. Si desactivo el plugin "String Translation", y accedo a la misma página del mismo custom post type, WordPress me devuelve la página correctamente y puedo visualizar el custom post type sin problema.

Ejemplo de URL: hidden link

Ahora funciona porque el plugin "String Translation" está desactivado. Pero si lo activo, esa URL deja de funcionar y WP retorna un 404. ¿¿Porqué??

Por lo tanto, el hecho de tener el plugin "String Translation" desactivado, hace que las cadenas de carácteres traducidas de mi tema, no salgan como deben. Salen en el idioma principal! Pero claro, si activo el plugin "String Translation", las cadenas salen correctamente, pero no puedo ver el custom post type... ¿Ayuda?

Gracias!

octubre 9, 2018 a las 8:04 pm #2801900

Carlos Rojas
Supporter

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

Timezone: America/Montevideo (GMT-03:00)

Hola Jordi,
Muchas gracias por contactar con el servicio de soporte de WPML.
Voy a hacer todo lo posible por ayudarlo con este problema.

Me puede decir cómo está creado este custom post type? Lo crea el tema, un plugin o lo creó usted directamente en el código?

Quedo a la espera de su respuesta.
Saludos cordiales,
Carlos

octubre 10, 2018 a las 6:35 am #2803108

jordi

Buenos días Carlos,

Aquí tienes el código que tengo en el functions.php:

function create_custom_post_types() {
    // productes
	$labels = array(
		'name'               => _x( 'Productes', 'post type general name', 'cellermasroig' ),
		'singular_name'      => _x( 'Producte', 'post type singular name', 'cellermasroig' ),
		'menu_name'          => _x( 'Productes', 'admin menu', 'cellermasroig' ),
		'name_admin_bar'     => _x( 'Producte', 'add new on admin bar', 'cellermasroig' ),
		'add_new'            => _x( 'Afegeix', 'producte', 'cellermasroig' ),
		'add_new_item'       => __( 'Afegeix un producte nou', 'cellermasroig' ),
		'new_item'           => __( 'Producte nou', 'cellermasroig' ),
		'edit_item'          => __( 'Edita el producte', 'cellermasroig' ),
		'view_item'          => __( 'Mostra el producte', 'cellermasroig' ),
		'all_items'          => __( 'Tots els productes', 'cellermasroig' ),
		'search_items'       => __( 'Cerca els productes', 'cellermasroig' ),
		'parent_item_colon'  => __( 'Producte pare:', 'cellermasroig' ),
		'not_found'          => __( 'No s\'ha trobat cap producte.', 'cellermasroig' ),
		'not_found_in_trash' => __( 'No s\'ha trobat cap producte a la paperera.', 'cellermasroig' )
	);

	$args = array(
		'labels'             => $labels,
		'public'             => true,
		'publicly_queryable' => true,
		'show_ui'            => true,
		'show_in_menu'       => true,
		'query_var'          => true,
		'rewrite'            => array( 'slug' => 'productes' ),
		'capability_type'    => 'page',
		'has_archive'        => false,
		'hierarchical'       => false,
		'menu_position'      => 10,
		'menu_icon'          => 'dashicons-products',
		'supports'           => array( 'title', 'editor', 'thumbnail' )
	);

	register_post_type( 'producte', $args );
}
add_action( 'init', 'create_custom_post_types', 0 );
octubre 10, 2018 a las 5:38 pm #2805330

Carlos Rojas
Supporter

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

Timezone: America/Montevideo (GMT-03:00)

Hola,
Muchas gracias por proveer el código.

La causa del problema está en el argumento 'rewrite' que debe ser de esta manera:

'rewrite' => array( 'slug' =>  _x('productes', 'URL slug'))

En este enlace puede encontrar la documentación oficial con respecto a este tema: https://wpml.org/2016/08/how-to-create-and-translate-custom-post-types/

Por favo hágame saber si necesita más asistencia de mi parte y contento de poder ayudarle.
Saludos cordiales,
Carlos

octubre 11, 2018 a las 2:25 pm #2808656

jordi

Hola Carlos,

Por desgracia, tu propuesta no ha solucionado el problema 🙁

Aquí tienes el código después de tu propuesta:

	$args = array(
		'labels'             => $labels,
		'public'             => true,
		'publicly_queryable' => true,
		'show_ui'            => true,
		'show_in_menu'       => true,
		'query_var'          => true,
		//'rewrite'          => array( 'slug' => 'productes' ),
		'rewrite'            => array( 'slug' =>  _x( 'productes', 'URL slug', 'cellermasroig' ) ),
		'capability_type'    => 'page',
		'has_archive'        => false,
		'hierarchical'       => false,
		'menu_position'      => 10,
		'menu_icon'          => 'dashicons-products',
		'supports'           => array( 'title', 'editor', 'thumbnail' )
	);

	register_post_type( 'producte', $args );

Te adjunto unas imágenes para que veas como lo tengo configurado en las opciones del plugin.

Sigue sin funcionar cuando activo el plugin "String Translation" (recibo 404). Si lo desactivo (en estos momentos), sí funciona, peeeero en los otros idiomas hay strings que no se traducen correctamente (puesto que el plugin ST está desactivado).

Espero puedas darme otra solución.
Saludos cordiales.

octubre 11, 2018 a las 8:11 pm #2809660

Carlos Rojas
Supporter

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

Timezone: America/Montevideo (GMT-03:00)

Hola,
Gracias por su respuesta.

He probado el código en un sitio en local y el problema desapareció. Al parecer el problema está en el sitio en producción. Sospecho que la causa pueda ser una incompatibilidad con otra funcionalidad de un plugin o tema.

Me gustaría pedirle que realice los siguientes pasos:
- Cree una copia del sitio antes de realizar cualquier cambio, por razones de seguridad.
- Borre cualquier memoria cache que pueda existir.
- Desactive todos los plugins excepto los de WPML y active String Translation.
- Active por un momento un tema por defecto de WordPress, por ejemplo Twenty Seventeen.
- Si el problema desapareció comience activando el tema y los plugins uno por uno hasta que vuelva a aparecer.

Me puede decir el resultado de estos pasos?

Nota: Es recomendable crear un sitio de pruebas con una copia del sitio en producción y realizar estos pasos alli, asi no se afectará el sitio publicado.

Quedo a la espera de su respuesta.
Saludos cordiales,
Carlos

octubre 15, 2018 a las 10:33 am #2816987

jordi

Buenos días Carlos,

1. He creado un sitio de pruebas con una copia del sitio en producción.
2. He borrado memoria caché.
3. He desactivado TODOS los plugins excepto los de WPML --> Resultado: sigue sin funcionar
4. He activado Twenty Seventeen --> Resultado: este tema no crea los CPT que sí crea mi tema personalizado (productos), por lo que cuando intento acceder a hidden link;, el resultado es también 404.

Por lo tanto, el problema persiste.

Si desactivo TODOS los plugins excepto los de WPML y activo mi tema, sigue devolviendo 404 cuando accedo a un producto. Mientras que si adicionalmente desactivo el plugin String Translation, ya puedo visualizar mi producto.

Sabes qué puede estar ocurriendo?

Gracias.
Un saludo.

octubre 16, 2018 a las 2:38 am #2819357

Carlos Rojas
Supporter

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

Timezone: America/Montevideo (GMT-03:00)

Hola,
Muchas gracias por su respuesta.

He creado una nueva instalación de WordPress en un ambiente de pruebas y he añadido el código al archivo functions.php del tema Twenty Seventeen que es el tema activo.

El problema no ha persistido en estas condiciones. Usted puede visitar el sitio accediendo a este enlace: hidden link y verificar que el post y sus traducciones están funcionando correctamente.

Nota: Puede ver el código añadido en functions.php a través del plugin WP File Manager que está instalado.

Saludos cordiales,
Carlos

octubre 17, 2018 a las 6:51 am #2823302

jordi

Hola Carlos,

Ya lo he solucionado. ¿Cómo? No tengo ni idea... Tocando cosas de las opciones de WPML como un desesperado. Al final, la pantalla de configuración de las traducciones de los CPT's ha quedado como te adjunto en la imagen.

Para mi, no tiene lógica que seleccionando la opción "Translatable - use translation if available..." funcione todo bien, mientras que si lo dejo en "Translatable - only show translated items" no funcione. Antes funcionaba con la opción "Translatable - only show..." hasta que un día actualicé el plugin. Pero bueno, la vida y la informática es así!

Un saludo y gracias!

octubre 17, 2018 a las 7:23 am #2823504

Carlos Rojas
Supporter

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

Timezone: America/Montevideo (GMT-03:00)

Hola,

Me alegra saber que el problema está resuelto 🙂

Por favor no dude en contactarnos si necesita de nuestra ayuda con WPML.
Saludos cordiales,
Carlos