web-dev-qa-db-fra.com

WP_Query pour obtenir des publications dans une catégorie et un format de publication spécifiques

J'ai essayé d'utiliser soit WP_Query ou get_posts pour extraire le message le plus récent qui se trouve à la fois dans une catégorie et dans un format de message spécifique.

<?php 
$singargs = array(
'numberposts' => 1,
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => array ( 'gift-of-the-day' ),
    ),
    array(
        'taxonomy', => 'post_format',
        'field' => 'slug',
        'terms' => array( 'aside'),
    )
)
);
$singPost = new WP_Query( $singargs );
foreach ( $singPost as $post ) : setup_postdata($post); ?>
<aside>
    <h2><?php the_title(); ?></h2>
</aside>
<?php endforeach; wp_reset_postdata(); ?>

Qu'est-ce que je fais mal ici?

1
jaacob

Je vois deux problèmes: changez aside en post-format-aside et puisque vous utilisez la boucle foreach, changez new WP_Query( $singargs ); en get_posts( $singargs ); pour que votre code ressemble à ceci:

<?php 
$singargs = array(
'numberposts' => 1,
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => array ( 'gift-of-the-day' ),
    ),
    array(
        'taxonomy', => 'post_format',
        'field' => 'slug',
        'terms' => array( 'post-format-aside'),
    )
)
);
$singPost = get_posts( $singargs );
foreach ( $singPost as $post ) : setup_postdata($post); ?>
<aside>
    <h2><?php the_title(); ?></h2>
</aside>
<?php endforeach; wp_reset_postdata(); ?>
1
Bainternet

Pourquoi ne pas simplement utiliser quelque chose comme:

$args = array('category' => 1 );
$all_posts = get_posts( $args);
foreach ($all_posts as $this_post) {
    if ( has_post_format( 'aside' ) ) {
        echo '<aside><h2>' . $this_post->title . '</h2></aside>';
        break;
        }
}

Cela pourrait être une erreur dans le code, mais l’idée est d’obtenir les articles dans la catégorie de recherche, puis de les analyser et de prendre le premier article au format recherché (au cas où vous ne pourriez pas utiliser votre code).

Désolé si je me trompe!

0
Simon