如何在WordPress的sidebar.php中获取页面分类/别名与标题?
没问题!假设你是在WordPress环境下(毕竟sidebar.php是WP模板里的常见文件),这里有两种靠谱的方法来获取你要的信息:
获取页面标题
在sidebar.php里,你可以用WordPress内置函数直接拿到当前页面的标题,推荐结合get_queried_object_id()来确保准确性——不管当前是单页面、归档页还是帖子,都能精准拿到对应标题:
// 获取当前页面/归档的ID $current_object_id = get_queried_object_id(); // 获取对应的标题(返回字符串,方便后续处理) $page_title = get_the_title($current_object_id); // 输出或使用标题 echo $page_title; // 会输出 "awesome explanation of abc"
如果只是想直接输出标题,也可以用the_title(),但它会直接渲染内容,而get_the_title()返回字符串更灵活。
获取URL中的目标Slug(video-tuts部分)
这里分两种常见场景,你可以根据实际需求选择:
场景1:目标Slug是当前页面的父页面Slug
如果abc是video-tuts的子页面,那可以通过页面的父子关系来获取父页面Slug:
// 获取当前页面的Post对象 $current_page = get_post(get_queried_object_id()); // 检查当前页面是否有父页面 if ($current_page && $current_page->post_parent) { // 获取父页面的Post对象 $parent_page = get_post($current_page->post_parent); // 父页面的Slug存储在post_name属性中 $parent_slug = $parent_page->post_name; echo $parent_slug; // 输出 "video-tuts" } else { // 没有父页面时的 fallback 逻辑 echo "No parent page found"; }
场景2:直接从URL路径中提取第一个分段
如果你不需要依赖页面的父子关系,只想直接从URL里拿第一个路径段,比如www.example.com/video-tuts/abc里的video-tuts,可以通过$_SERVER全局变量处理:
// 先移除URL中的查询参数(比如?foo=bar这类) $request_uri = strtok($_SERVER['REQUEST_URI'], '?'); // 去掉首尾的斜杠,避免产生空分段 $clean_uri = trim($request_uri, '/'); // 把路径按斜杠分割成数组 $path_segments = explode('/', $clean_uri); // 提取第一个分段作为目标Slug if (!empty($path_segments[0])) { $target_slug = $path_segments[0]; echo $target_slug; // 输出 "video-tuts" } else { // 处理首页的情况,可自定义逻辑 echo "Home page"; }
内容的提问来源于stack exchange,提问作者Abdus Sattar Bhuiyan
相关产品推荐
相关产品推荐

