问题描述

我们使用 Wordpress 作为知识库。我们刚刚为 Github 页面留下了 mediawiki 和 jekyll,并将不同系统的数量从四个减少到仅一个。一个 Wordpress 安装的博客和三个三个不同的知识库为三个不同的产品。优点是编辑者只需要掌握一个系统而不是三个系统。

我们已经将固定链接设置为/%postname%/,这使得良好和逻辑的网页链接。在大多数页面中,我们使用编辑器添加到其他知识库页面的链接。在弹出式窗口中,我们选择要链接的页面。该固定链接添加到页面。由于我们不断致力于知识库,所以会发生邮件名称更改。这将导致在内部知识库页面上链接到更改的帖子 404 错误。

因此,我想添加页面 ID(?p = 123) 而不是邮件名称。当链接被点击在前端 Wordpress 似乎足够聪明地将页面 id 重写到/%postname%/Advantage 是我不必更改每个页面中的链接。 (或者也可以自动完成?)

最佳解决方案

添加到你的 functions.php:

function wp_link_query_mod ( $results ){
    if( count( $results ) ){
        for( $i=0; $i<count($results); $i++ ){
            $results[$i]['permalink'] = wp_get_shortlink( $results[$i]['ID'] );
        }
    }
    return $results;
}
add_filter('wp_link_query', 'wp_link_query_mod');

这个钩子只能从 WP 3.7 开始使用,如果你有一个早期的版本,那么它有一个替代方案,但这意味着要更改 WP 核心文件中的一行。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。