目标就如同标题如示,优化一下tag链接,也算是SEO优化的一部分吧。
复制下方代码添加到当前wordpress主题文件functions.php的末尾空行当中。
代码如下:
// 1. 生成标签链接时将slug替换为MD5
add_filter('term_link', function($url, $term, $taxonomy) {
if ($taxonomy === 'post_tag' && is_object($term) && isset($term->name)) {
$md5 = md5($term->name);
$tag_base = get_option('tag_base') ?: 'tag';
// 只替换 path 中的 slug
$url = preg_replace(
'#/' . preg_quote($tag_base, '#') . '/[^/]+#',
'/' . $tag_base . '/' . $md5,
$url
);
}
return $url;
}, 10, 3);
// 2. 添加自定义重写规则,支持 /tag/MD5/ 形式
add_action('init', function() {
$tag_base = get_option('tag_base') ?: 'tag';
add_rewrite_rule(
$tag_base . '/([a-f0-9]{32})/?$',
'index.php?tag=$matches[1]',
'top'
);
// 支持分页
add_rewrite_rule(
$tag_base . '/([a-f0-9]{32})/page/([0-9]{1,})/?$',
'index.php?tag=$matches[1]&paged=$matches[2]',
'top'
);
// 支持feed
add_rewrite_rule(
$tag_base . '/([a-f0-9]{32})/feed/(feed|rdf|rss|rss2|atom)/?$',
'index.php?tag=$matches[1]&feed=$matches[2]',
'top'
);
add_rewrite_rule(
$tag_base . '/([a-f0-9]{32})/(feed|rdf|rss|rss2|atom)/?$',
'index.php?tag=$matches[1]&feed=$matches[2]',
'top'
);
});
// 3. 解析请求时将MD5还原为真实slug
add_action('parse_request', function($wp) {
if (isset($wp->query_vars['tag'])) {
$md5 = $wp->query_vars['tag'];
if (preg_match('/^[a-f0-9]{32}$/', $md5)) {
$tags = get_terms([
'taxonomy' => 'post_tag',
'hide_empty' => false,
]);
foreach ($tags as $tag) {
if (md5($tag->name) === $md5) {
$wp->query_vars['tag'] = $tag->slug;
break;
}
}
}
}
});
// 4. 激活插件或主题切换时刷新重写规则
function my_tag_md5_flush_rewrite_rules() {
flush_rewrite_rules();
}
add_action('after_switch_theme', 'my_tag_md5_flush_rewrite_rules');
if (function_exists('register_activation_hook')) {
register_activation_hook(__FILE__, 'my_tag_md5_flush_rewrite_rules');
}
评论抢沙发