Suporte » Desenvolvendo com WordPress » loop entre dois post types

  • marcelosampaio84

    (@marcelosampaio84)


    Olá a todos estou com uma duvida, preciso fazer um loop entre dois post types
    ‘post type A’ e’ post type B’, só que o ‘post type B’ tem varias categorias mas só preciso pegar a ‘categoria-x’ fiz o codigo abaixo funciona mas não como o esperado.
    Desde já agradeço a todos!!

    <?php
        $args = array(
            'post_type' => array('post-type-A', 'post-type-B'),
            'numberposts' => '6',
            'tax_query' => array(
                array(
                    'taxonomy' => 'post-type-B-cat', // nome taxonomies
                    'field' => 'slug',
                    'terms' => 'categoria-x' // slug da categoria
                )
            )
        );
    ?>
    
    <?php $loop = get_posts($args); ?>
    <?php if ($loop) : ?>
    
        <?php foreach ($loop as $post) : setup_postdata($post); ?>
    
            <div>
            <h2>"><?php the_title(); ?></h2>
            </div>
    
        <?php endforeach; ?>
    
    <?php else: ?>
        
        <p>Nenhuma postagem</p>
    
    <?php endif; ?>
    
    <?php wp_reset_query(); ?>
    • Este tópico foi modificado 4 anos, 12 meses atrás por Mário Valney. Motivo: Código
Visualizando 1 resposta (de um total de 1)
  • Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá, tudo bem?

    Gostaria de indicar o uso da WP_Query:
    https://developer.wordpress.org/reference/classes/wp_query/

    De qualquer forma, como tax_query filtra pela taxonomia, o WP tenta buscar posts do tipo A com essa taxonomia também.

    Uma possível solução, seria usar um OR e aceitar posts sem essa taxonomia (que provavelmente são os do tipo A). O problema é se houverem posts do tipo B sem essa taxonomia.

    Ficaria assim:

    'tax_query' => [
        'relation' => 'OR',
        [
            'taxonomy' => 'post-type-B-cat',
            'field'    => 'slug',
            'terms'    => 'categoria-x',
        ],
        [
            'taxonomy' => 'post-type-B-cat',
            'field'    => 'slug',
            'operator' => 'NOT EXISTS',
        ],
    ],
Visualizando 1 resposta (de um total de 1)
  • O tópico ‘loop entre dois post types’ está fechado para novas respostas.