This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

This topic contains 6 risposte, has 2 voci.

Last updated by Tommaso 4 mesi, 2 settimane fa.

Assigned support staff: Vincenzo.

Autore Post
May 18, 2019 at 1:13 pm #3838965

Tommaso

Salve

Sto sviluppando un sito in locale e mi sono trovato con la necessità di rendere i post non traducibili (mantenerli solo in italiano). Dopo aver reso non traducibili i post, sono andato a creare il primo e mi sono accorto però che sulla pagina che dovrebbe elencarli (home.php) non era presente nulla. Ho controllato anche la variabile $posts e infatti l'array era vuoto. Ho creato più post e nulla. Ho continuato a fare dei test, portando nuovamente i post a essere traducibili fino a capire dove avveniva il problema. Ecco tutti i passaggi per ricreare il problema:

- Seleziono "Non traducibile" (WPML > Impostazioni > Traduzione dei tipi di contenuti)
- Crea un nuovo post (post_1)
- All'interno del template home.php, post_1 non si visualizza
- Seleziono "Traducibile: mostra solo gli elementi tradotti"
- All'interno del template home.php, post_1 si visualizza
- Seleziono "Non traducibile"
- All'interno del template home.php, post_1 si visualizza
- Crea un nuovo post (post_2)
- All'interno del template home.php, post_1 si visualizza, post_2 non si visualizza
- Seleziono "Traducibile: mostra solo gli elementi tradotti"
- All'interno del template home.php, post_1 e post_2 si visualizzano entrambi

Se i posts vengono creati "Non traducibile" non vengono inseriti nella variabile $posts a meno che non li si renda traducibili e poi nuovamente non traducibili. Questo è sicuramente un bug e testandolo anche sul tema base di wordpress si ripresenta sempre.

May 20, 2019 at 1:32 pm #3847369

Vincenzo
Supporter

Languages: Inglese (English ) Italiano (Italiano )

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

Salve e grazie per aver contattato il supporto WPML!

Se desideri che i Post siano solo nella lingua predefinita del sito (Italiano), è necessario impostare il Post type su "Traducibile: mostra solo gli elementi tradotti" e non tradurre i post.

Quando si rende un post Type "Non traducibile", i post creati non avranno informazioni sulla lingua e quindi verranno "filtrati". Questo perché nella pagina articoli in Italiano, dove vengono visualizzati i post, si presuppone che siano visibili solo i post in Italiano. I post che non hanno informazioni sulla lingua non verranno visualizzati.

Se per ragioni di sviluppo del sito desideri comunque lasciare i Post su "Non traducibile", puoi provare ad aggiungere l'argomento 'suppress_filters' su 'true' nella query dei post.

'suppress_filters' => true,

Fammi sapere se così risolvi o se hai bisogno di maggiori informazioni.

Grazie

May 20, 2019 at 7:52 pm #3849951

Tommaso

Ciao Vincenzo

Rispondo a punti alla tua risposta.

Se desideri che i Post siano solo nella lingua predefinita del sito (Italiano), è necessario impostare il Post type su "Traducibile: mostra solo gli elementi tradotti" e non tradurre i post.

Io ho necessità che non sia possibile tradurli.

Quando si rende un post Type "Non traducibile", i post creati non avranno informazioni sulla lingua e quindi verranno "filtrati". Questo perché nella pagina articoli in Italiano, dove vengono visualizzati i post, si presuppone che siano visibili solo i post in Italiano. I post che non hanno informazioni sulla lingua non verranno visualizzati.

In tutte le prove che ho elencato sopra, non ho mai creato post in lingua diversa dall'italiano (es: inglese), però i post in italiano non erano comunque visibili nella pagina di elenco post in italiano. Nel momento in cui li rendevo "Traducibili" venivano visualizzati. Trasformandoli nuovamente in "Non Traducibili" i post già presenti continuavano a essere visibili, quelli nuovi no.

Se per ragioni di sviluppo del sito desideri comunque lasciare i Post su "Non traducibile", puoi provare ad aggiungere l'argomento 'suppress_filters' su 'true' nella query dei post.

Ok. Effettivamente era il risultato che volevo ottenere, dato che i post non verranno tradotti in lingua, ma vorrei che fossero comunque disponibili all'utente che visita il sito in inglese. Non mi è chiaro il perchè il filtro sia attivo quando i post dovrebbero essere comunque solo in una lingua. Comqunque ho ottenuto il risultato sperato.

Per chi volesse questo risultato consiglio la seguente impostazione sul file functions.php:

add_filter('pre_get_posts', 'remove_wpml_filter_from_post');
function remove_wpml_filter_from_post( $query ){
	// Rimozione del filtro lingua sui post (non tradotti)
	if( $query->is_main_query() && ( is_home() || is_category() ) ){
		$query->set('suppress_filters', 'true');
	}
	return $query;
}

Grazie.

May 21, 2019 at 8:16 am #3853011

Vincenzo
Supporter

Languages: Inglese (English ) Italiano (Italiano )

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

Ciao,

sono contento che hai ottenuto il risultato desiderato.

Potresti valutare anche le seguenti possibilità:

1. Lasciare i Post su "Non traducibile" e utilizzare lo strumento "Inserisci informazioni sulla lingua" disponibile su WPML -> Assistenza -> risoluzione dei problemi, per aggiungere le informazioni sulla lingua ai post.

Questo è necessario perché, come ti accennavo prima, quando si rende un post Type "Non traducibile", i post creati non avranno informazioni sulla lingua. Quindi anche se sono creati in Italiano, in realtà saranno senza informazioni sulla lingua.

2. Impostare i Post su "Traducibile: se disponibile, usa la traduzione, altrimenti lascia la lingua predefinita".

In questo modo, tutti i post creati nella lingua predefinita (Italiano), saranno visibili anche nella lingua Inglese, senza bisogno di traduzione.
- https://wpml.org/documentation/translating-your-contents/displaying-untranslated-content-on-pages-in-secondary-languages/

Se desideri impedire che i post vengano tradotti dagli utenti del sito, puoi dare un'occhiata al nostro plugin Toolset Access:
- https://toolset.com/documentation/user-guides/setting-access-control/
- https://wpml.org/2016/01/allow-certain-users-edit-specific-languages/
- https://wpml.org/documentation/translating-your-contents/how-to-use-access-plugin-to-create-editors-for-specific-language/

Buon lavoro

May 27, 2019 at 1:15 pm #3897515

Tommaso

Ciao Vincenzo

Grazie per l'ulteriore chiarimento.
Riguardo al punto 1. ti faccio solo un'ultima domanda: cliccando "Inserisci informazioni sulla lingua" queste informazioni saranno applicate sia sui post vecchi che su quelli che verranno creati in futuro o solo su quelli vecchi?

Grazie.

May 27, 2019 at 1:21 pm #3897537

Vincenzo
Supporter

Languages: Inglese (English ) Italiano (Italiano )

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

Ciao,

si tratta di uno strumento di troubleshooting. Di conseguenza le informazioni sulla lingua saranno applicate solo sui post attuali e non su quelli futuri.

Buona giornata

May 27, 2019 at 1:35 pm #3897729

Tommaso

Grazie.