Un utente ha chiesto informazioni su Polylang di Wordpress

get_terms () ignora ‘lang’?

Un utente ha chiesto 👇

Ciao,
Sto usando una tassonomia personalizzata in pochi termini, tradotta in tre lingue. Voglio solo trovare i termini nella lingua corrente, quindi sto facendo questo:


$options = array(
	'taxonomy' => 'event_category',
	'hide_empty' => false
);
if (function_exists('pll_current_language')) {
	$options['lang'] = pll_current_language();
}
$terms = get_terms($options);

Quindi la stringa $ include le opzioni ‘lang’ => ‘de’, ma ricevo comunque TUTTI i termini esistenti. Qualunque cosa io usi come parametro lang, ottengo tutti i termini della tassonomia nel database per la tassonomia “event_category”.

è un insetto?

Questo argomento è stato modificato 3 anni, 3 mesi fa da. Questo argomento è stato modificato 3 anni, 3 mesi fa da.

(@klaro)

3 anni, 3 mesi fa

Ho installato il plug-in “NE Custom Taxonomy Order” e poiché questo potrebbe cambiare il modo in cui funziona la query, l’ho disabilitato – non ha risolto il problema precedente.

(@ isuke01)

3 anni fa

usi Polylang o polylang pro?

(@klaro)

3 anni fa

Versione normale, non quella professionale.

(@ isuke01)

2 anni, 12 mesi fa

Mi spiace, ho notato questo problema dopo l’installazione di Pro, ma su un altro sito Web ho riscontrato lo stesso errore, che ha fatto il mio amico.
C’è qualcosa di strano

https://polylang.pro/doc/developpers-how-to/

dice che dovrebbe funzionare. E ha funzionato. Poi si è fermato.
Sembra essere un bug di qualche tipo.
Voglio anche un punto: lo uso in WP REST.
L’ho risolto usando:


$positions_tax = get_terms( 'pos', $args );
if($positions_tax){
        foreach ($positions_tax as $key => $tax) {
            if(pll_get_term_language($tax->term_id) !== $args['lang']){
                unset($positions_tax[$key]);
            }
        }
        $positions_tax = array_values($positions_tax);
    }

Ci scusiamo per il ritardo nella risposta 😉

(@klaro)

2 anni, 12 mesi fa

Eh si, tutti i termini / post funzionano e poi li filtra manualmente, grazie per l’utile stick!

Ma con mia sorpresa, non c’è risposta / correzione da parte dell’autore del plugin, questo mi sembra un bug piuttosto serio ed eccitante.

(@nicolapeluchetti)

2 anni, 8 mesi fa

È stato risolto? Non lo vedo funzionare in polacco (versione gratuita)

(@alibasheer)

2 anni, 7 mesi fa

Pensi di risolverlo presto? stessa domanda qui.

Questa risposta è stata modificata 2 anni, 7 mesi fa.

(@samueldiethelm)

2 anni, 5 mesi fa

Il problema esiste ancora oggi come sembra. Ho il problema con il plugin MetaBox, tutte le lingue vengono visualizzate quando lo aggiungo

'query_args' => array(
    'lang' => 'en'
)

Non voglio modificare il plugin metabox con la soluzione da @ isuke01, quindi l’ho risolto con il seguente batch:

add_filter('get_terms' , 'pll_get_terms_fix', 10, 4);
function pll_get_terms_fix($terms, $taxonomy, $query_vars, $term_query)
{
    if(in_array('mytaxonomy',$taxonomy) && function_exists('pll_get_term_language') && isset($query_vars['lang'])){
        foreach ($terms as $key => $term) {
            if($term->taxonomy == 'mytaxonomy' && pll_get_term_language($term->term_id) !== $query_vars['lang']){
                unset($terms[$key]);
            }
        }
        $terms = array_values($terms);
    }
    return $terms;
}

Questa risposta è stata modificata 2 anni, 5 mesi fa. Motivo: Typo Author Plugin

(@chouby)

2 anni, 4 mesi fa

Ciao,

Ho appena provato a Pollang 2.3.10


get_terms( array( 'taxonomy' => 'category' ) ); // returns terms in the current language
get_terms( array( 'taxonomy' => 'category', 'lang' => '' ) ); // returns all languages
get_terms( array( 'taxonomy' => 'category', 'lang' => 'en' ) ); returns terms in English

Funzionano tutti come previsto.

(@samueldiethelm)

2 anni, 4 mesi fa

@chouby, hai provato la tassonomia personalizzata?

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *