在网站设计中,URL结构的选择是一项重要的决策。一个良好的URL结构可以使你的网站更易于索引和搜寻,同时也可以提高用户体验。然而,WordPress默认的链接结构可能并不适合所有的需求。但是如果我们直接修改固定链接,可能导致之前被收录的地址失效,严重影响 SEO。
解决思路
解决方案有两个主要步骤:检查URL,然后进行重定向。
第一步,检查请求的URL是否包含文章ID。如果不包含,我们就继续到下一步。
第二步,通过文章标题在数据库中查询文章的ID,然后生成新的URL,并将请求重定向到这个新的URL。
具体实现
function redirect_to_post_id() { // 如果请求的 URL 不包含 post_id,执行以下操作 if (!is_numeric(basename($_SERVER['REQUEST_URI'], ".html"))) { global $wpdb; // 从 URL 中获取文章标题 $postname = urldecode(basename($_SERVER['REQUEST_URI'], ".html")); // 在数据库中搜索对应的文章,获取文章的 ID $post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name = %s", urlencode($postname))); if ($post_id) { // 获取文章的分类 $categories = get_the_category($post_id); $category_slug = $categories[0]->slug; // 生成新的 URL $new_url = home_url() . "/{$category_slug}/{$post_id}.html"; // 将请求重定向到新的 URL wp_redirect($new_url, 301); exit; } } } // 将函数添加到 'template_redirect' 动作钩子,确保它在模板重定向时运行 add_action('template_redirect', 'redirect_to_post_id');