📌  相关文章
📜  带有类别的自定义帖子类型循环 (1)

📅  最后修改于: 2023-12-03 15:09:45.977000             🧑  作者: Mango

带有类别的自定义帖子类型循环

在 WordPress 中,我们可以很容易地创建帖子类型和分类。但是,有时候我们会遇到需要带有类别的自定义帖子类型循环的情况。

在本文中,我将向大家介绍如何创建带有类别的自定义帖子类型循环。

创建自定义帖子类型

首先,我们需要创建自定义帖子类型。我们可以使用 register_post_type() 函数来创建它。

/*
 * 创建自定义帖子类型 - books
 */
function create_books_post_type() {
    $args = array(
        'labels' => array(
            'name' => 'Books',
            'singular_name' => 'Book',
        ),
        'public' => true,
        'has_archive' => true,
        'menu_position' => 5,
        'supports' => array(
            'title',
            'editor',
            'thumbnail',
            'excerpt',
            'comments',
        ),
    );
    register_post_type( 'books', $args );
}
add_action( 'init', 'create_books_post_type' );

上面的代码创建了一个名为 books 的自定义帖子类型,并设置了一些基本属性。您可以根据自己的需要进行设置。

创建自定义分类

接下来,我们需要创建自定义分类来为我们的自定义帖子类型添加类别。我们可以使用 register_taxonomy() 函数来创建它。

/*
 * 创建自定义分类 - book_categories
 */
function create_book_categories_taxonomy() {
    $args = array(
        'labels' => array(
            'name' => 'Book Categories',
            'singular_name' => 'Book Category',
        ),
        'public' => true,
        'hierarchical' => true,
    );
    register_taxonomy( 'book_categories', 'books', $args );
}
add_action( 'init', 'create_book_categories_taxonomy' );

上面的代码创建了一个名为 book_categories 的自定义分类,并将其与 books 自定义帖子类型相关联。

创建带有类别的循环

最后,我们需要创建带有类别的循环来显示我们的自定义帖子类型和它们的类别。我们可以使用 WP_Query() 类和 get_terms() 函数来创建它。

/*
 * 创建带有类别的循环
 */
function custom_loop() {
    $args = array(
        'post_type' => 'books',
        'posts_per_page' => 10,
        'tax_query' => array(
            array(
                'taxonomy' => 'book_categories',
                'field' => 'slug',
                'terms' => 'fiction',
            ),
        ),
    );
    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            // 输出帖子信息
            echo '<h3>' . get_the_title() . '</h3>';
            echo '<p>' . get_the_excerpt() . '</p>';
            echo '<a href="' . get_permalink() . '">Read more &rarr;</a>';
        }
    } else {
        // 如果没有帖子,则输出一条消息
        echo 'No books found.';
    }
    wp_reset_postdata();
}

上面的代码创建了一个名为 custom_loop() 的函数,用于创建带有类别的循环。该循环显示了自定义帖子类型 books 中类别为 fiction 的前 10 个帖子的标题、摘要和阅读更多链接。

结论

带有类别的自定义帖子类型循环可以帮助我们更好地组织和呈现我们的内容。使用上面的代码和方法,我们可以轻松地创建带有类别的自定义帖子类型循环。