Consultar todas las entradas con una etiqueta específica

15 oct 2014, 12:30:59
Vistas: 47K
Votos: 4

Necesito obtener todas las entradas con una etiqueta específica, pero estoy obteniendo todas las entradas en su lugar. Mi consulta funciona si publico una entrada con la etiqueta que necesito y listo todas las entradas con esa etiqueta, pero cuando publico una entrada con otra etiqueta, está obteniendo la entrada recién publicada.

Esta es mi consulta:

$original_query = $wp_query;
$wp_query = null;
$args=array(
    'posts_per_page' => -1, 
    'tag' => $post_tag
);
$wp_query = new WP_Query( $args );
$post_titles=array();
$i=0;
if ( have_posts() ) :
    while (have_posts()) : the_post();
        $post_titles[$i]=get_the_ID() ;
        $i++;
    endwhile;
endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();
2
Comentarios

¿Cómo estás obteniendo $post_tag? Y tu consulta es la misma que query_posts la cual no debería usarse para nada.

Pieter Goosen Pieter Goosen
15 oct 2014 13:13:11

tengo una etiqueta específica que usé de forma estática

Antwan Antwan
15 oct 2014 13:19:03
Todas las respuestas a la pregunta 2
5

Es mucho más fácil crear una nueva WP_Query que intentar limpiar o sobrescribir la consulta original.

Si $post_tag es el slug de una etiqueta, puedes usar simplemente:

<?php
$the_query = new WP_Query( 'tag='.$post_tag );

if ( $the_query->have_posts() ) {
    echo '<ul>';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
    }
    echo '</ul>';
} else {
    // no se encontraron entradas
}
/* Restaurar los datos originales del Post */
wp_reset_postdata();
15 oct 2014 12:45:11
Comentarios

sí, $post_tag es el slug de la etiqueta pero no entendí cuál es la diferencia principal en tu código, lo siento soy nuevo en wordpress

Antwan Antwan
15 oct 2014 12:58:46

La diferencia principal es que tu código intenta anular la consulta principal de WP en lugar de solo crear una nueva.

Courtney Ivey Courtney Ivey
15 oct 2014 13:05:09

me aparece "no se encontraron publicaciones", lo siento pero ¿hay alguna diferencia entre tag y tag slug?

Antwan Antwan
15 oct 2014 13:09:46

En la Consulta, puedes usar slugs o ids.

Courtney Ivey Courtney Ivey
15 oct 2014 13:12:09

Ahora funciona pero añadí una nueva etiqueta en inglés y funciona, pero tengo etiquetas en árabe y no funcionan con ellas

Antwan Antwan
15 oct 2014 13:18:19
0

En tu archivo functions.php

/* Mostrar Productos Relacionados */
/* ============================= */

if ( ! function_exists( 'display_related_products' ) ) {

    function display_related_products($post_tag) {
        ?>
        <div class="related-products">

            <!-- Consulta simple de WP_Query -->
            <?php
                $args = array(
                    'post_type' => 'product',
                    'tag' => $post_tag, // Aquí es donde se filtra por la etiqueta que deseas
                    'orderby' => 'id',
                    'order' => 'ASC'
                );

                $related_products = new WP_Query( $args );
            ?>

            <?php while ( $related_products -> have_posts() ) : $related_products -> the_post(); ?>

                <a href="<?php the_permalink(); ?>" class="related-product">
                    <?php if( has_post_thumbnail() ) : ?>
                        <?php the_post_thumbnail( 'full', array( 'class' => 'related-product-img', 'alt' => get_the_title() ) ); ?>
                    <?php endif; ?>
                </a>

            <?php endwhile; wp_reset_query(); ?>

        </div>
        <?php
    }
}

Llámalo desde cualquier lugar con

display_related_products('nombre-de-la-etiqueta');
5 ago 2016 00:20:54