Problema con WP_Query e Polylang

19 nov 2014, 20:07:41
Visualizzazioni: 17.5K
Voti: 6

Nel tema che sto sviluppando, ho un template che mostra 5 post utilizzando il loop standard:

            <?php
          $my_query = new WP_Query('showposts=5');
          while ($my_query->have_posts()) : $my_query->the_post(); ?>

e così via...

C'è una pagina (Actualités) che utilizza questo template. Ora ho aggiunto Polylang e ho creato un'altra pagina (News) che utilizza lo stesso template. Non ci sarà una traduzione in inglese per gli articoli del blog, ma vorrei comunque che i lettori di lingua inglese vengano indirizzati alla pagina News che sarà "la stessa" di Actualités (in francese).

Avrei pensato che la query sopra producesse lo stesso risultato indipendentemente dalla pagina che utilizza il template, ma in realtà la pagina francese funziona bene, mentre in News non vedo alcun post. Qualche idea?

0
Tutte le risposte alla domanda 3
1

OK - Ho capito, i vecchi post già presenti nel database NON hanno una traduzione in inglese e questo è il problema con il mio loop. Quando aggiungo un nuovo post, ho la possibilità di fornire una traduzione che poi compare nella pagina inglese.

Guardando la documentazione ho scoperto che posso anche mostrare il contenuto di default quando non c'è una traduzione con qualcosa del tipo:

<?php query_posts(array('post_type' => 'post','lang' => 'fr')); // forza la query per i post in francese ?>
if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php global $post;
    if($post_id = pll_get_post($post->ID, pll_current_language())) { // ottieni il post tradotto (nella lingua corrente) se esiste
        $post = get_post($post_id);
        setup_postdata($post);
    }?>

... fai quello che vuoi nel tuo loop ...

19 nov 2014 20:50:49
Commenti

Sembra che questa soluzione non funzioni più, c'è un'alternativa?

Arturo Arturo
23 set 2021 19:37:50
1

Non è più semplice così?

        $paged = get_query_var('page') ?: 1;
        $args = array(
            's'              => get_search_query(), // Query di ricerca
            'posts_per_page' => 8,                  // Numero di post per pagina
            'paged'          => (int) $paged,      // Pagina corrente
            'fields'         => 'ids',              // Restituisce solo gli ID
            'post_type'      => array('any'),       // Tutti i tipi di post
            'tax_query'      => array(             // Query tassonomica
                                    array(
                                    'taxonomy' => 'language', // Tassonomia
                                    'field' => 'slug',        // Campo
                                    'terms' => pll_current_language(), // Termine corrente
                                    )
                                ),

        );
        $query = new WP_Query( $args ); // Esegui la query
8 feb 2024 01:54:43
Commenti

La tua risposta potrebbe essere migliorata con ulteriori informazioni di supporto. Per favore [modifica] per aggiungere maggiori dettagli, come citazioni o documentazione, in modo che altri possano confermare che la tua risposta è corretta. Puoi trovare maggiori informazioni su come scrivere buone risposte nel centro assistenza.

User User
8 feb 2024 16:24:10
0

imposta 'lang' => pll_current_language() nella tua query per ottenere la lingua corrente.

$args = array(
    'posts_per_page' => 5,
    'lang' => pll_current_language(), // Recupera i post nella lingua corrente
);

$my_query = new WP_Query($args);
8 feb 2024 08:15:43