How to retrieve posts(books) based on category(taxonomy) in wordpress?

梦想的初衷 提交于 2020-01-18 00:02:11

问题


I am trying to display posts of specific category(taxonomy) that is 'Book1'.

I tried to display it with the following code.

                    $args = array(
                        'post_type' => 'book',
                        'posts_per_page' => 6,
                        'tax_query' => array(
                            array(
                                'taxonomy' => 'Book1',
                                'field' => 'id',
                                'terms' => 1
                            )
                        )
                    );
                    echo '<br>';
                    $postss = get_posts( $args );

                    if ( ! empty( $postss ) && is_array( $postss ) ) {
                        // Run a loop and print them all
                        $i=1;
                        foreach ( $postss as $termm ) { 
                                echo ' '.$i.' '.$termm->post_title. '<br>';
                                $i++;
                        }
                    }
               ?>

In output no any item is displayed.


回答1:


$custom_terms = get_terms('Book1');

foreach($custom_terms as $custom_term) {
    wp_reset_query();
    $args = array(
        'post_type' => 'book',
        'posts_per_page' => 6,
        'tax_query' => array(
            array(
                'taxonomy' => 'Book1',
                'field' => 'slug',
                'terms' => $custom_term->slug,
            ),
        ),
     );

    $loop = new WP_Query($args);
    if($loop->have_posts()) {
        echo '<h2>'.$custom_term->name.'</h2>';

        while($loop->have_posts()) : $loop->the_post();
            echo '<a href="'.get_permalink().'">'.get_the_title().'</a><br>';
        endwhile;
    }
}

try this code




回答2:


$args = array(
        'post_type' => 'book',
        'posts_per_page' => 6,
        'tax_query' => array(
            array(
                'taxonomy' => 'Book1',
                'field' => ''term_id', // here you are worng name too
                'terms' => 1
            )
        )
    );
    echo '<br>';
    $postss = get_posts( $args );

    if ( ! empty( $postss ) && is_array( $postss ) ) {
        // Run a loop and print them all
        $i=1;
        foreach ( $postss as $termm ) { 
                echo ' '.$i.' '.$termm->post_title. '<br>';
                $i++;
        }
    }

?>

// best solution

<?php

$query = new WP_Query( array(
    'post_type' => 'book',          // name of post type.
    'tax_query' => array(
        array(
            'taxonomy' => 'Book1',   // taxonomy name
            'field' => 'term_id',           // term_id, slug or name
            'terms' => 1,                  // term id, term slug or term name
        )
    )
) );

while ( $query->have_posts() ) : $query->the_post();
    // do stuff here....
endwhile;

/**
 * reset the orignal query
 * we should use this to reset wp_query
 */
wp_reset_query();
?>



回答3:


I did it by doing like this. Thanks all.

        $args = array(
            'post_type' => 'book',
            'cat' => '35'
        );
        echo '<br>';
        $postss = query_posts($args);
        if ( ! empty( $postss ) && is_array( $postss ) ) {
            // Run a loop and print them all
            ?><?php $i=1;
            foreach ( $postss as $termm ) { ?>

                    <?php echo ' '.$i.' '.$termm->post_title. '<br>';$i++;?>
                <?php
            }
        }


来源:https://stackoverflow.com/questions/59488755/how-to-retrieve-postsbooks-based-on-categorytaxonomy-in-wordpress

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!