it-swarm-pt.tech

Listar posts por categoria exclui postagem atual

Estou tentando obter uma lista de postagens de uma categoria, ecoar o título e o permalink de todas as postagens nessa categoria, mas excluir o permalink e o nome da postagem SE a postagem atual estiver nessa lista.

Ele será exibido em single.php após ou dentro do loop

Alguém sabe se é possível, se sim como?

Desde já, obrigado

<?php query_posts('category_name=MyCatName&showposts=-1'); ?>
<?php while (have_posts()) : the_post(); ?>

        <a href="<?php the_permalink(); ?>">
          <?php the_title(); ?>
          </a>
        <?php endwhile; ?>
3
user983248

Primeiro, observe que, como o loop personalizado é um loop/consulta secundário, você deve usar a classe WP_Query em vez de query_posts(). Leia por que .

Dito isto,

/* main post's ID, the below line must be inside the main loop */
$exclude = get_the_ID();

/* alternatively to the above, this would work outside the main loop */
global $wp_query;
$exclude = $wp_query->post->ID;

/* secondary query using WP_Query */
$args = array(
    'category_name' => 'MyCatName', // note: this is the slug, not name!
    'posts_per_page' => -1 // note: showposts is deprecated!
);
$your_query = new WP_Query( $args );

/* loop */
echo '<ul>';
while( $your_query->have_posts() ) : $your_query->the_post();
    if( $exclude != get_the_ID() ) {
        echo '<li><a href="' . get_permalink() . '">' .
            get_the_title() . '</a></li>';
    }
endwhile;
echo '</ul>';

isso vai fazer.

6
Johannes Pille

Baseado no código de Johannes, mas usando o argumento post__not_in:

/* Secondary query using WP_Query */
$wpse63027_posts = new WP_Query( array(
    'category_name'  => 'MyCatName',
    'posts_per_page' => -1,
    'post__not_in'   => array( get_queried_object_id() ), // Exclude current post ID (works outside the loop)
) );

Então você pode percorrer as novas postagens:

if ( $wpse63027_posts->have_posts() )
{
    while( $wpse63027_posts->have_posts() )
    {
        $wpse63027_posts->the_post();

        // Now do everything you want with the default API calls
        // Example
        the_title( '<h2>', '</h2>', true );
        the_content();
    }
}

WP_Query "Post _ */Page_Parameters

2
Geert