Lặp qua các phân loại tùy chỉnh và hiển thị bài viết


7

Mặc dù tôi đã có thể làm cho nó hoạt động cho các danh mục WP bình thường, tôi không thể làm cho nó hoạt động cho các phân loại tùy chỉnh.

Tôi muốn lặp qua từng phân loại tùy chỉnh (danh mục trong trường hợp của tôi) và tạo ra một số bài đăng cho mỗi bài.

Một ví dụ về đầu ra sẽ là:

Category 1

post from category one
post from category one

read more category one


Category 2

post from category two
post from category two

read more category two

Tất nhiên nó sẽ lặp lại thông qua bất kỳ phân loại có sẵn cho loại bài tùy chỉnh.


Tôi hoàn toàn không hiểu câu hỏi của bạn. Khi bạn hỏi "lặp qua từng phân loại tùy chỉnh", bạn có nghĩa là "lặp qua các điều khoản của mỗi phân loại tùy chỉnh?" Ngoài ra, khi bạn yêu cầu "sản xuất một số bài đăng" thì "sản xuất" có nghĩa là chèn các thể hiện mới của loại bài đăng vào cơ sở dữ liệu hoặc tạo HTML cho loại bài đăng không?
MikeSchinkel

Câu trả lời:


9

Tôi nghĩ rằng tôi sẽ cung cấp một câu trả lời khác vì câu trả lời ở trên là một chút hack, tôi cũng đã thêm một lớp khác có được tất cả các phân loại cho một post_type.

$post_type = 'post';

// Get all the taxonomies for this post type
$taxonomies = get_object_taxonomies( (object) array( 'post_type' => $post_type ) );

foreach( $taxonomies as $taxonomy ) : 

    // Gets every "category" (term) in this taxonomy to get the respective posts
    $terms = get_terms( $taxonomy );

    foreach( $terms as $term ) : 

        $posts = new WP_Query( "taxonomy=$taxonomy&term=$term->slug&posts_per_page=2" );

        if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post();
            //Do you general query loop here  
        endwhile; endif;

    endforeach;

endforeach;

Bạn nên thêm từng bài đăng được tìm thấy vào một $post__not_inmảng, vì vậy bạn có thể chuyển nó đến WP_Queryđể ngăn các bài đăng trùng lặp đi qua.


1

Bạn đang tìm kiếm điều này?

<?php query_posts(array('post_type' => 'post type name', 'Taxonomy slug' => $term->slug ) ); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Cách tạo vòng phân loại tùy chỉnh

Hy vọng nó sẽ giúp


0

Sao chép và dán chức năng này trong chức năng của bạn.php

if ( ! function_exists( 'display_all_products_from_all_categories' ) ) {

    function display_all_products_from_all_categories() {

        // Get all the categories for Custom Post Type Product
        $args = array( 
            'post_type' => 'product', 
            'orderby' => 'id', 
            'order' => 'ASC' 
        );

        $categories = get_categories( $args );

        foreach ($categories as $category) {
            ?>
            <div class="<?php echo $category->slug; ?>">
                <!-- Get the category title -->
                <h3 class="title"><?php echo $category->name; ?></h3>

                <!-- Get the category description -->
                <div class="description">
                    <p><?php echo category_description( get_category_by_slug($category->slug)->term_id ); ?></p>
                </div>

                <ul class="mhc-product-grid">

                    <?php
                        // Get all the products of each specific category
                        $product_args = array(
                            'post_type'     => 'product',
                            'orderby'      => 'id',
                            'order'         => 'ASC',
                            'post_status'   => 'publish',
                            'category_name' => $category->slug //passing the slug of the current category
                        );

                        $product_list = new WP_Query ( $product_args );

                    ?>

                    <?php while ( $product_list -> have_posts() ) : $product_list -> the_post(); ?>

                        <li class="product <?php the_field( 'product_flavor' ); ?>">
                            <a href="<?php the_permalink(); ?>" class="product-link">

                                <!-- if the post has an image, show it -->
                                <?php if( has_post_thumbnail() ) : ?>
                                    <?php the_post_thumbnail( 'full', array( 'class' => 'img', 'alt' => get_the_title() ) ); ?>
                                <?php endif; ?>

                                <!-- custom fields: product_flavor, product_description ... -->
                                <h3 class="title <?php the_field( 'product_flavor' ); ?>"><?php the_title(); ?></h3>
                                <p class="description"><?php the_field( 'product_description' ); ?></p>
                            </a>
                        </li>

                    <?php endwhile; wp_reset_query(); ?>
                </ul>

            </div>
            <?php
        }
    }
}

Sau đó gọi nó từ bất cứ nơi nào trong mẫu của bạn với:

display_all_products_from_all_categories();

-1

Vui lòng kiểm tra ví dụ này; tạo một vòng lặp riêng cho phân loại của bạn. Bạn cũng có thể sử dụng điều này trong một vòng lặp foreach để sử dụng tất cả các danh mục. Hoặc bạn phải tạo một truy vấn sql riêng.

<?php
$taxonomies = get_the_term_list($post->ID, 'YOUR_TAXONOMIE', '', '', '');
$taxonomies = explode('>', $taxonomies);
$taxonomies = $taxonomies[1];
$myq = new WP_Query('your_taxonomie = '.$taxonomies); 
if ($myq->have_posts()) : while ($myq->have_posts()) : $myq->the_post(); // the loop ?>

            <?php the_title();?>
            <?php the_content();?>

<?php endwhile; else:?>

<?php endif;?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.