WordPress子主题不自动加载父主题single-post_type.php模板问题
排查解决步骤
- 先确认自定义文章类型
product的注册参数配置:public和has_archive两个参数必须设置为true才会触发默认模板层级规则。如果该自定义文章类型是父主题注册的,可直接在子主题functions.php中添加以下代码修改参数:
add_filter( 'register_post_type_args', 'custom_modify_product_post_type_args', 10, 2 ); function custom_modify_product_post_type_args( $args, $post_type ) { if ( $post_type === 'product' ) { $args['public'] = true; $args['has_archive'] = true; } return $args; }
- 检查模板文件的命名和存放路径:必须确保文件名为
single-product.php,无拼写错误,且直接放在父主题根目录下,不要嵌套在父主题的子文件夹内。 - 刷新WordPress固定链接规则:进入后台「设置」-「固定链接」页面,无需修改任何配置,直接点击「保存更改」即可刷新重写规则,多数模板加载异常问题可通过该操作解决。
- 强制加载模板(上述步骤无效时使用):在子主题
functions.php中添加以下代码,主动校验并加载父主题的single-product.php模板:
add_filter( 'template_include', 'custom_load_product_single_template' ); function custom_load_product_single_template( $template ) { if ( is_singular( 'product' ) ) { $parent_template = get_template_directory() . '/single-product.php'; if ( file_exists( $parent_template ) ) { return $parent_template; } } return $template; }
内容的提问来源于stack exchange,提问作者thevikas
相关产品推荐
相关产品推荐

