Problemă cu WP_Query și Polylang

19 nov. 2014, 20:07:41
Vizualizări: 17.5K
Voturi: 6

În tema pe care o dezvolt, am un șablon care afișează 5 postări folosind bucla standard:

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

și așa mai departe...

Există o pagină (Actualités) care folosește acest șablon. Am adăugat Polylang și am creat o altă pagină (News) care folosește același șablon. Nu vor exista traduceri în engleză pentru intrările de blog, dar aș dori ca cititorii vorbitori de engleză să fie direcționați către pagina News care va fi "la fel" ca Actualités (în franceză).

M-aș fi așteptat ca interogarea de mai sus să producă același rezultat indiferent de pagina care folosește șablonul, dar de fapt pagina franceză funcționează corect, iar în News nu văd nicio postare. Aveți idei?

0
Toate răspunsurile la întrebare 3
1

OK - Am înțeles, postările vechi deja existente în baza de date NU au o traducere în engleză și asta e problema cu bucla mea. Când adaug o postare nouă, am opțiunea să furnizez o traducere care apoi apare în pagina engleză.

Prin documentație am găsit că pot afișa și versiunea implicită când nu există traducere prin ceva de genul:

<?php query_posts(array('post_type' => 'post','lang' => 'fr')); // forțează interogarea postărilor în franceză ?>
if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php global $post;
    if($post_id = pll_get_post($post->ID, pll_current_language())) { // obține postarea tradusă (în limba curentă) dacă există
        $post = get_post($post_id);
        setup_postdata($post);
    }?>

... faci ce vrei în bucla ta ...

19 nov. 2014 20:50:49
Comentarii

Se pare că această soluție nu mai funcționează, există o alternativă?

Arturo Arturo
23 sept. 2021 19:37:50
1

Nu este mai ușor așa?

        $paged = get_query_var('page') ?: 1;
        $args = array(
            's'              => get_search_query(),
            'posts_per_page' => 8,
            'paged'          => (int) $paged,
            'fields'         => 'ids',
            'post_type'      => array('any'),
            'tax_query'      => array(
                                    array(
                                    'taxonomy' => 'language',
                                    'field'    => 'slug',
                                    'terms'    => pll_current_language(),
                                    )
                                ),

        );
        $query = new WP_Query( $args );
8 feb. 2024 01:54:43
Comentarii

Răspunsul tău ar putea fi îmbunătățit cu informații suplimentare de susținere. Te rugăm să [editezi] pentru a adăuga detalii suplimentare, cum ar fi citate sau documentație, astfel încât alții să poată confirma că răspunsul tău este corect. Poți găsi mai multe informații despre cum să scrii răspunsuri bune în centrul de ajutor.

User User
8 feb. 2024 16:24:10
0

setează 'lang' => pll_current_language() în interogarea ta pentru a obține limba curentă.

$args = array(
    'posts_per_page' => 5,
    'lang' => pll_current_language(), // Preia articolele în limba curentă
);

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