为文章永久链接创建带自定义字段$trick_nummer的301重定向短URL
实现自定义短URL并301重定向到原文章
嘿,我来帮你搞定这个基于自定义字段的短URL重定向需求!假设你用的是WordPress(毕竟提到了文章元数据自定义字段),下面是完整的实现方案:
核心思路
我们需要完成三件关键事情:
- 给
mydomain.com/Tipp{数字}格式的URL添加重写规则,让WordPress能识别并处理它 - 告诉WordPress允许接收
trick_nummer这个查询参数 - 当用户访问短URL时,根据自定义字段值匹配对应文章,返回301永久重定向到原链接
代码实现
把下面的代码放到你的主题functions.php文件里(更推荐做成自定义插件,避免主题更新丢失代码):
function custom_trick_shorturl_rewrite() { // 添加重写规则,匹配 Tipp 后跟数字的URL结构 add_rewrite_rule( '^Tipp(\d+)/?$', 'index.php?trick_nummer=$matches[1]', 'top' ); } add_action('init', 'custom_trick_shorturl_rewrite'); // 注册查询变量,让WordPress允许接收trick_nummer参数 function custom_trick_query_var($vars) { $vars[] = 'trick_nummer'; return $vars; } add_filter('query_vars', 'custom_trick_query_var'); // 处理请求,完成301重定向 function custom_trick_redirect() { $trick_num = get_query_var('trick_nummer'); if ($trick_num) { // 查询拥有对应trick_nummer自定义字段的文章 $args = array( 'post_type' => 'post', // 如果是自定义文章类型,替换成你的类型slug 'meta_query' => array( array( 'key' => 'trick_nummer', 'value' => $trick_num, 'compare' => '=' ) ), 'posts_per_page' => 1, 'no_found_rows' => true, // 优化查询,不需要分页统计 'fields' => 'ids' // 只返回文章ID,提升查询效率 ); $matching_posts = get_posts($args); if (!empty($matching_posts)) { $target_url = get_permalink($matching_posts[0]); // 发送301永久重定向响应(对SEO友好) wp_redirect($target_url, 301); exit; } else { // 没找到对应文章时,返回404页面 global $wp_query; $wp_query->set_404(); status_header(404); } } } add_action('template_redirect', 'custom_trick_redirect');
关键操作:刷新重写规则
添加完代码后,一定要去WordPress后台的设置 → 固定链接页面,不需要修改任何设置,直接点击「保存更改」按钮。这一步会刷新WordPress的重写规则,让新的短URL规则正式生效。
注意事项
- 确保
trick_nummer自定义字段的值是唯一的,如果多个文章用同一个数字,只会跳转到查询到的第一篇文章 - 如果你的文章是自定义文章类型(不是默认的post),记得把代码里的
'post_type' => 'post'替换成你的自定义类型slug,比如'trick' - 测试时可以用浏览器开发者工具的「网络」标签,确认重定向的状态码是301,确保对SEO友好
内容的提问来源于stack exchange,提问作者gimsech
相关产品推荐
相关产品推荐

