如何将现有worktype分类归档页/worktype/all设为网站默认首页?
实现自定义分类法归档页作为首页的最优方案
一、让首页直接加载worktype/all的归档内容
在主题的functions.php中添加以下代码,通过修改主查询参数,让首页直接调用作品集CPT和worktype分类的全部内容,无需新建重复模板:
add_action('pre_get_posts', 'set_homepage_to_worktype_all'); function set_homepage_to_worktype_all($query) { // 仅针对首页的主查询生效 if ($query->is_home() && $query->is_main_query()) { // 替换为你的作品集自定义文章类型(CPT)的slug $query->set('post_type', 'portfolio'); // 设置分类法查询,这里假设"all"是worktype分类下的一个项slug $query->set('tax_query', array( array( 'taxonomy' => 'worktype', 'field' => 'slug', 'terms' => 'all', ), )); // 如果"all"不是具体分类项,而是默认全部内容,可去掉上面的tax_query,改用: // $query->set('taxonomy', 'worktype'); // $query->set('term', ''); } }
二、将worktype/all的链接统一指向首页
添加以下代码,修改分类项的生成链接,让所有指向worktype/all的跳转都直接指向网站首页,避免重复路径:
add_filter('term_link', 'redirect_worktype_all_to_home', 10, 3); function redirect_worktype_all_to_home($termlink, $term, $taxonomy) { // 仅针对worktype分类下的"all"项生效 if ($taxonomy === 'worktype' && $term->slug === 'all') { return home_url('/'); } return $termlink; }
三、让首页复用worktype归档模板
如果你的worktype归档模板是tax-worktype.php,添加以下代码让首页直接使用这个模板,无需复制模板文件:
add_filter('template_include', 'use_worktype_template_for_home'); function use_worktype_template_for_home($template) { if (is_home() && is_main_query()) { // 替换为你的tax-worktype.php模板的实际路径 $worktype_template = get_stylesheet_directory() . '/tax-worktype.php'; if (file_exists($worktype_template)) { return $worktype_template; } } return $template; }
四、刷新固定链接设置
完成以上代码添加后,进入WordPress后台的「设置」→「固定链接」,无需修改任何选项,直接点击「保存更改」,确保重写规则生效。
这样做的好处:
- 仅维护一个
tax-worktype.php模板文件,避免重复代码 - 所有指向
worktype/all的链接都会跳转到首页,路径统一 - 首页本质是加载
worktype/all的归档内容,逻辑完全复用
内容的提问来源于stack exchange,提问作者Tiago Nogueira
相关产品推荐
相关产品推荐

