web-dev-qa-db-fra.com

Requête personnalisée par catégorie

J'essaie d'interroger le type de message personnalisé appelé news par une catégorie appelée Alumni avec ID=160.

En conséquence, lorsque j'utilise de tels arguments, j'obtiens tous mes messages personnalisés sans Alumni catégorie:

$args = array(
  'posts_per_page' => -1,
  'post_type' => 'news',
  'orderby' => 'date',
  'order' => 'DESC',
  'category__not_in' => 160
);
$loop = new WP_Query( $args );

<?php while ( $loop->have_posts() ) : $loop->the_post();?>
...
<?php endwhile; ?>

Cependant, changer category__not_in en category__in donne une liste vide, mais je m'attendrais à l'inverse du résultat initial. Je ne peux pas vraiment comprendre où je me suis trompé.

De plus, j'ai essayé d'utiliser cat et category_name à la place et j'ai joué avec différentes catégories mais les résultats étaient toujours les mêmes.

Lors de mes recherches, je suis tombé sur 'tax_query' mais je ne peux pas le faire fonctionner aussi bien. La documentation n'est pas tout à fait claire pour moi.

1
bdobry

S'agit-il de taxonomies personnalisées ou de catégories régulières?

si ce ne sont que des catégories, vous devriez utiliser:

$args = array(
  'posts_per_page' => -1,
  'post_type' => 'news',
  'orderby' => 'date',
  'order' => 'DESC',
  'category_name' => 'Alumni'
);
$loop = new WP_Query( $args );

<?php while ( $loop->have_posts() ) : $loop->the_post();?>
...
<?php endwhile; ?>

si vous voulez l'utiliser par identifiant

utilisation:

'cat' => 160 

au lieu de

'category_name' => 'Alumni'
1
rudtek

Avez-vous essayé d'utiliser quelque chose comme ceci dans le tableau, Avait un problème similaire plus tôt que cela a résolu.

'taxonomy' => 'your_taxonomy_name',

Ou quelque chose comme:

    'tax_query' => array(
        'taxonomy' => 'your_taxonomy_name',
        'terms' => 'Alumni',
        'field' => 'slug',
        'include_children' => true,
),
0
Randomer11

Pour obtenir des publications de type publication personnalisées avec une catégorie spécifique, utilisez la taxonomie personnalisée.

Enregistrez le nom de taxonomie du type d'article personnalisé comme des catégories, puis attribuez une catégorie à chaque article lorsque vous ajoutez un nouvel article. Voici l'exemple du code

  add_action( 'init', 'news_my_taxonomy');
  function news_my_taxonomy(){
 // custom post type taxonomies
    $labels = array(
    'name' => 'Categories',
    'singular_name' => 'Category',
    'add_new' => 'Add Category',
    'add_new_item' => 'Add New Category',
    'all_items' => 'All Categories',
    'edit_item' => 'Edit Item',
    'new_item' => 'New Item',
    'view_item' => 'View Item',
    'update_item' => 'Update Category',
    'search_items' => 'Search Categories',
    'not_found' => 'No record found',
    'not_found_in_trash' => 'No items found in trash',
    'parent_item_colon' => 'Parent Item',
    'menu_name' => 'Categories'
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'news_category'),
        'show_ui' => true,
        'show_admin_column' => true,
        'query_var' => true,
        );
        register_taxonomy('news_category', array('news'), $args);
}

puis

créer une page de modèle de taxonomie 'taxonomy-news_category.php'

et ajoutez la requête pour obtenir les publications avec ce nom de catégorie

   $cat_name = single_cat_title;
   $args = array( 'category_name' => $cat_name, 'posts_per_page' => 12, 'order'=> 'ASC', 'post_type' => 'news', 'paged' => $paged);

Tout le travail est fait. Bonne chance

0
HeroWeb512