You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

影视主题自定义页面模板中搜索表单失效问题求助

代码错误排查与修复方案

一、表单提交基础错误

  • searchform.php中表单属性拼写错误:methode="get"应为method="get",拼写错误会导致浏览器无法正确识别表单提交方式,进而引发跳转异常。
    修复后的表单标签:
    <form class="d-flex" role="search" method="get" action="<?php echo esc_url( home_url( '/' ) ) ?>">
    

二、search.php逻辑错误

  1. 剧集分类循环未执行PHP代码:get_template_part('/assests/series-temp');未包裹在<?php ?>标签内,会被当作纯文本输出,无法加载目标模板片段;同时这段代码未结合搜索关键词过滤分类,无论搜索内容是什么都会输出所有剧集分类,完全不符合搜索需求。
    基础修复(先让代码正常执行):

    <?php get_template_part('/assests/series-temp'); ?>
    

    若要实现分类名称匹配搜索关键词,需修改get_terms参数,添加搜索条件:

    $args = array(
      'taxonomy'      => array( 'series' ),
      'hide_empty'    => true,
      'fields'        => 'all',
      'name__like'    => $search // 匹配包含搜索词的分类名称
    );
    
  2. 搜索范围缺失剧集自定义文章类型:当前WP_Query仅搜索movies类型,未包含剧集的自定义文章类型(假设剧集的post_type为series),导致搜索结果只显示电影,剧集内容无法被检索到。
    修复后的查询参数:

    $args= array(
      'post_type'=> array('movies', 'series'), // 同时覆盖电影和剧集类型
      'post_status' => 'publish',
      'posts_per_page' => -1,
      's' => $search
    );
    
  3. 冗余的post_type判断:循环内的if ( get_post_type( get_the_ID() ) == 'movies' )完全多余,因为已经通过post_type参数限定了查询范围。若需要根据类型加载不同模板,可调整为:

    while ( $titleQuery->have_posts() ){ $titleQuery->the_post();
      if ( get_post_type() == 'movies' ) {
        get_template_part('/assests/movie-temp');
      } else {
        get_template_part('/assests/series-temp');
      }
    }
    

三、额外优化建议

  • 确保自定义文章类型注册时设置了'public' => true和'exclude_from_search' => false,否则无法被搜索功能纳入范围。
  • 可在搜索表单中添加隐藏字段,指定搜索的文章类型范围:
    <input type="hidden" name="post_type" value="movies,series">
    

内容的提问来源于stack exchange,提问作者Mohamed Omar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:23:25