it-swarm.com.de

So filtern Sie benutzerdefinierte Beitragstypen nach benutzerdefinierter Kategorietaxonomie

Ich verwende WordPress 4.6.1 und versuche zu lernen, wie benutzerdefinierte Beitragstypen nach einem Kategorietaxonomieprozess gefiltert werden. Dies ist sehr hilfreich, da nicht-technische Benutzer im Administrator benutzerdefinierte Posts nach Kategorien filtern können.

Das ist mein Setup ...

  1. Ich baue ein Kinderthema aus zweiundzwanzig

  2. Ich habe in meiner child functions.php - Datei einen benutzerdefinierten Beitragstyp erstellt und registriert ...

    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. Ich verwende jetzt meinen registrierten benutzerdefinierten Beitragstyp in meiner untergeordneten index.php-Datei wie folgt:

    $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. Schließlich habe ich von wp-admin aus meine benutzerdefinierten Beiträge erstellt und "einem" meiner Beiträge die Kategorie "Specials" zugewiesen. Die anderen sind nicht kategorisiert. Und jede Seite wird veröffentlicht.

... Aber aus irgendeinem Grund listet meine Browserseite alle meine Beiträge dieses benutzerdefinierten Beitragstyps auf und nicht nur Sonderangebote. Ich mache etwas falsch?

1
klewis

Du machst einen kleinen Fehler in deinem $pargs

Gemäß Dokumentation

Wichtiger Hinweis: tax_query akzeptiert ein Array von Steuerabfrageargumenten (es akzeptiert ein Array von Arrays). Außerdem hast du "post_per_page" anstelle von "posts_per_page"

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

Sie können es mit den folgenden Codes versuchen:

$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