You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除WordPress URL中冗余字符串:解决Press-this extended插件发布文章后的URL格式问题

解决Press-This Extended生成多余URL参数的问题

最优方案:添加自定义函数到functions.php

直接在主题里加个自定义函数是最简单也最安全的选择,比改.htaccess靠谱多了——后者容易误触其他合法请求,而函数能精准针对插件的重定向逻辑。

  1. 打开你当前主题的functions.php文件(可以通过WordPress后台「外观→主题文件编辑器」找到,或者用FTP访问服务器的wp-content/themes/你的主题名/目录)
  2. 把下面的代码粘贴到文件末尾(注意别破坏原有代码的结构):
add_filter('redirect_post_location', 'fix_press_this_extended_url', 10, 2);
function fix_press_this_extended_url($location, $post_id) {
    // 只处理Press-This Extended生成的带多余参数的URL
    if (strpos($location, 'post_type=post&p=') !== false) {
        // 移除多余的"post_type=post&"字符串
        $location = str_replace('post_type=post&p=', 'p=', $location);
    }
    return $location;
}
  1. 保存文件,用Press-This Extended发布一篇测试文章,验证跳转后的URL是否已经变成mysite.com/?p=xxxx的格式。

原理说明

WordPress的redirect_post_location钩子专门用来修改文章发布/更新后的重定向地址。我们的函数会检查重定向URL里是否包含那串多余的参数,只在符合条件的时候替换,完全不干扰经典编辑器或其他插件的正常工作。如果发现代码不生效,可以把钩子优先级的10改成20(确保我们的函数在插件的重定向逻辑之后执行)。


备选方案:修改.htaccess文件(不推荐)

如果你更倾向于用服务器层面的规则,可以在WordPress根目录的.htaccess文件里,把下面的规则加到WordPress默认的RewriteRule之前:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^post_type=post&p=([0-9]+)$
RewriteRule ^$ /?p=%1 [R=301,L]

但要注意:这个规则会匹配所有根目录下带有post_type=post&p=xxx的请求,虽然对普通文章影响不大,但如果你的站点有其他依赖post_type=post参数的功能,可能会出问题,所以还是自定义函数的方案更稳妥。

内容的提问来源于stack exchange,提问作者Konstantinos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 00:34:04