web-dev-qa-db-fra.com

Wordpress get_posts par catégorie

J'ai le peu de code suivant:

$args = array(
    'posts_per_page'   => -1,
    'category'         => 7,
    'orderby'          => 'name',
    'order'            => 'ASC',
    'post_type'        => 'product'
);

$posts = get_posts($args);var_dump($posts);

Cela devrait renvoyer un message que je sais qui appartient à la catégorie, mais ce n’est pas le cas. Si je laisse de côté l'argument 'category', j'obtiens tous les produits, donc je sais que cela devrait normalement fonctionner. Si je change la catégorie en 1 et retire mon type de message personnalisé (produit), je reçois mes messages par défaut.

Je ne peux pas voir ce qui ne va pas avec ça. Quelqu'un peut-il repérer le problème?

3
Michiel Standaert

Selon toute probabilité, vous utilisez une taxonomie personnalisée, et non la taxonomie intégrée category. Si tel est le cas, les paramètres de catégorie ne fonctionneront pas. Vous aurez besoin d'un tax_query pour interroger les publications d'un terme spécifique. ( N'oubliez pas, get_posts utilise WP_Query, vous pouvez donc passer n'importe quel paramètre de WP_Query à get_posts)

$args = [
    'post_type' => 'product',
    'tax_query' => [
        [
            'taxonomy' => 'my_custom_taxonomy',
            'terms' => 7,
            'include_children' => false // Remove if you need posts from term 7 child terms
        ],
    ],
    // Rest of your arguments
];

RESSOURCES SUPPLÉMENTAIRES

9
Pieter Goosen
<ul>
    <?php
    $args = array( 'posts_per_page' => 5, 'offset'=> 1, 'category' => 1 );

    $myposts = get_posts( $args );
    foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </li>
    <?php endforeach; 
    wp_reset_postdata();?>


    </ul>

Mai cela va vous aider.

Merci

1
Rohit gilbile