Problema con WP_Query y polylang

19 nov 2014, 20:07:41
Vistas: 17.5K
Votos: 6

En el tema que desarrollo, tengo una plantilla que muestra 5 publicaciones usando el loop estándar:

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

y así sucesivamente...

Hay una página (Actualités) que usa esta plantilla. Ahora agregué polylang y creé otra página (News) que usa la misma plantilla. No habrá una traducción al inglés de las entradas del blog, pero me gustaría que los lectores de habla inglesa sean dirigidos a la página News que será "la misma" que Actualités (en francés).

Supondría que la consulta anterior produce el mismo resultado sin importar qué página use la plantilla, pero en realidad la página en francés funciona bien, mientras que en News no veo ninguna publicación. ¿Alguna idea?

0
Todas las respuestas a la pregunta 3
1

ENTENDIDO - Ya lo tengo, las publicaciones antiguas que ya están en la base de datos NO tienen una traducción al inglés y ese es el problema con mi bucle. Cuando añado una nueva publicación, tengo la opción de proporcionar una traducción que luego aparece en la página en inglés.

Revisando la documentación encontré que también puedo mostrar el contenido por defecto cuando no hay traducción con algo como:

<?php query_posts(array('post_type' => 'post','lang' => 'fr')); // forzar la consulta de publicaciones en francés ?>
if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php global $post;
    if($post_id = pll_get_post($post->ID, pll_current_language())) { // obtener la publicación traducida (en el idioma actual) si existe
        $post = get_post($post_id);
        setup_postdata($post);
    }?>

... hacer lo que necesites dentro de tu bucle ...

19 nov 2014 20:50:49
Comentarios

Parece que esta solución ya no funciona, ¿hay alguna alternativa?

Arturo Arturo
23 sept 2021 19:37:50
1

¿No es más fácil así?

        $paged = get_query_var('page') ?: 1;
        $args = array(
            's'              => get_search_query(), // Término de búsqueda
            'posts_per_page' => 8,                  // Posts por página
            'paged'          => (int) $paged,       // Página actual
            'fields'         => 'ids',             // Solo IDs de posts
            'post_type'      => array('any'),       // Cualquier tipo de post
            'tax_query'      => array(              // Consulta por taxonomía
                                    array(
                                    'taxonomy' => 'language',    // Taxonomía de idioma
                                    'field'    => 'slug',        // Campo slug
                                    'terms'    => pll_current_language(), // Idioma actual
                                    )
                                ),

        );
        $query = new WP_Query( $args ); // Ejecutar la consulta
8 feb 2024 01:54:43
Comentarios

Tu respuesta podría mejorarse con información adicional de apoyo. Por favor, [edita] para añadir más detalles, como citas o documentación, para que otros puedan confirmar que tu respuesta es correcta. Puedes encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.

User User
8 feb 2024 16:24:10
0

establece 'lang' => pll_current_language() en tu consulta para obtener el idioma actual.

$args = array(
    'posts_per_page' => 5,
    'lang' => pll_current_language(), // Recupera posts en el idioma actual
);

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