使用$_SERVER['HTTP_REFERER']重写Yoast面包屑时遇数组键未定义错误
解决Yoast面包屑修改中的PHP未定义数组键警告
问题根源
$_SERVER['HTTP_REFERER'] 并非在所有请求场景下都存在——比如用户直接输入URL访问页面时,这个变量就不会生成,直接调用会触发未定义数组键的警告。
修正代码及说明
add_filter('wpseo_breadcrumb_links', 'wpse_332125_breadcrumbs'); function wpse_332125_breadcrumbs($links) { if(is_singular('custom-template')) { // 先确保目标数组索引存在,避免额外警告 if (isset($links[2])) { // 优先使用HTTP_REFERER,不存在则 fallback 到自定义文章类型的归档页面 $target_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : get_post_type_archive_link('custom-template'); $links[2] = array( 'text' => 'Category', 'url' => $target_url, 'allow_html' => 2 ); } } return $links; }
关键优化点
- 用
isset()分别检测$_SERVER['HTTP_REFERER']和$links[2]的存在性,从根源消除警告; - 增加
get_post_type_archive_link('custom-template')作为备选链接,确保即使没有上一页来源时,面包屑仍指向有效页面,避免用户跳转到无效地址。
内容的提问来源于stack exchange,提问作者hecklesme
相关产品推荐
相关产品推荐

