如何在WordPress中完整注册并显示“Books”自定义文章类型?
如何在WordPress中完整注册并显示“Books”自定义文章类型?
嘿,我看到你已经在尝试给书店网站注册「Books」自定义文章类型了,但你的代码好像没写完,而且还有不少可以优化的地方,让我一步步帮你把这件事捋顺~
一、先补全并优化注册代码
你现有代码的框架是对的,但缺少了最关键的注册调用,而且可以补充更多细节让后台管理更顺手。把下面的完整代码替换你主题functions.php里的片段:
function register_book_post_type() { // 自定义后台显示的文字标签,让操作更清晰 $labels = array( 'name' => 'Books', 'singular_name' => 'Book', 'menu_name' => 'Books', 'name_admin_bar' => 'Book', 'add_new' => '添加新书', 'add_new_item' => '添加新书', 'new_item' => '新书', 'edit_item' => '编辑书籍', 'view_item' => '查看书籍', 'all_items' => '所有书籍', 'search_items' => '搜索书籍', 'not_found' => '未找到书籍', 'not_found_in_trash' => '回收站中未找到书籍' ); $args = array( 'labels' => $labels, 'public' => true, // 让文章类型公开可访问 'publicly_queryable' => true, 'show_ui' => true, // 在后台显示管理界面 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'books' ), // 设置友好的URL别名,比如你的域名/books/ 'capability_type' => 'post', // 使用和普通文章一样的权限设置 'has_archive' => true, // 启用归档页面 'hierarchical' => false, // 书籍不需要层级关系,设为false 'menu_position' => 5, // 把菜单放在「文章」下面,方便找到 'menu_icon' => 'dashicons-book-alt', // 用WordPress自带的书本图标,后台更直观 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ) // 增加摘要和自定义字段,方便添加作者、ISBN这些信息 ); // 关键!调用注册函数,把自定义文章类型注册进去 register_post_type( 'book', $args ); } // 在WordPress初始化时执行注册函数 add_action( 'init', 'register_book_post_type' );
二、刷新固定链接(必做步骤)
代码加好后,一定要去后台的设置→固定链接页面,随便切换一个链接格式再切回你常用的(或者直接点击「保存更改」),这样WordPress会重新生成URL规则,确保书籍的页面和归档页能正常访问。
三、在前端显示书籍列表
如果要在网站前端展示书籍,可以用WP_Query来查询并输出。比如在某个页面模板里添加下面的代码:
<?php // 查询所有书籍,按标题升序排列,每页显示10本 $book_query = new WP_Query( array( 'post_type' => 'book', 'posts_per_page' => 10, 'orderby' => 'title', 'order' => 'ASC' ) ); // 如果有书籍就循环输出 if ( $book_query->have_posts() ) : while ( $book_query->have_posts() ) : $book_query->the_post(); ?> <div class="book-card"> <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> <!-- 显示书籍封面(如果设置了特色图像) --> <?php if ( has_post_thumbnail() ) : ?> <div class="book-cover"> <?php the_post_thumbnail( 'medium' ); ?> </div> <?php endif; ?> <!-- 显示书籍摘要 --> <p class="book-excerpt"><?php the_excerpt(); ?></p> </div> <?php endwhile; // 重置查询,避免影响后续内容 wp_reset_postdata(); else : echo '<p>暂无书籍上架~</p>'; endif; ?>
贴心小提示
- 如果你用的是子主题,记得把代码加到子主题的
functions.php里,这样主题更新时代码不会丢失 - 要是想更方便地管理书籍的专属信息(比如作者、出版社、价格、ISBN),可以用Advanced Custom Fields这类插件来创建可视化的自定义字段,比手动加字段省心多啦
内容来源于stack exchange
相关产品推荐
相关产品推荐

