web-dev-qa-db-fra.com

Comment filtrer les types d'articles personnalisés par taxonomie de catégories personnalisées

J'utilise WordPress 4.6.1 et j'essaie d'apprendre à filtrer les types d'articles personnalisés par un processus de taxonomie de catégorie. Ceci est très utile car les personnes non techniques peuvent facilement filtrer les publications de type publication personnalisées par catégorie dans l’administrateur.

C'est ma configuration ...

  1. Je construis un thème d'enfant sur tweentysixteen

  2. J'ai créé et enregistré un type de message personnalisé dans mon enfant functions.php fichier comme celui-ci ...

    add_action('init','prowp_register_my_post_types');
    function prowp_register_my_post_types() {
        register_post_type('products',
        array(
            'labels' => array (
                'name' => 'Products',
                'singular_name' => 'Product',
                'add_new' => 'Add New Product',
                'add_new_item' => 'Add New Product',
                'edit_item' => 'Edit this Product',
                'new_item' => 'New Product',
                'all_items' => 'All My Products'
            ),
            'public' => true,
            'show_ui' => true,
            'taxonomies'  => array ( 
                'category' 
            ),
            'supports' =>  array (
                'title', 
                'revisions', 
                'editor', 
                'thumbnail', 
                'page-attributes', 
                'custom-fields')
        ));
    }
    
  3. J'utilise maintenant mon type de message personnalisé enregistré dans mon fichier index.php enfant comme ceci:

    $pargs = array(
            'post_per_page' => '-1',
            'post_type' => 'products',
            'tax_query' => array(
                'taxonomy' => 'category',
                'field'    => 'slug',
                'terms' => 'Specials'
            )
        );
        $myProducts = new WP_Query($pargs);
        while ( $myProducts->have_posts() ) : $myProducts->the_post();
            get_template_part('template-parts/products',get_post_format());
        endwhile;
        rewind_posts();
        wp_reset_postdata();
    
  4. Enfin, à partir de wp-admin, j'ai ensuite créé mes types de publication personnalisés et affecté la catégorie "Promotions" à "une" de mes publications. Les autres ne sont pas classés. Et chaque page est publiée.

... Mais pour une raison quelconque, ma page de navigateur répertorie tous mes messages de ce type de message personnalisé, et pas seulement les Promotions. Est-ce que je fais quelque chose de mal?

1
klewis

Vous faites une petite erreur dans votre $pargs

Selon documentation

Remarque importante: tax_query prend un tableau de tableaux d'arguments de requête de taxe (il faut un tableau de tableaux). Aussi vous avez "post_per_page" au lieu de "posts_per_page"

$pargs = array(
    'posts_per_page' => '-1',
    'post_type' => 'products',
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms' => 'specials'
        )
    )
2
Anish

Vous pouvez essayer avec les codes suivants:

$terms = wp_get_post_terms( $post->ID, array('category') );
$term_slugs = wp_list_pluck( $terms, 'slug' );    
$args = array(
        'post_per_page' => '-1',
        'post_type' => array( 'products' ), 
            'tax_query' => array(
                array(
                'taxonomy' => 'category',
                'field' => 'slug',
                'terms' => $term_slugs
                )  
    );


    $my_query = null;
    $my_query = new WP_Query($args);
0
bdtheme