自定义永久链接选项不起作用,忽略自定义结构并使用 post-name

Custom permalink option not works, custom structure ignored and post-name used

在带有 Wordpress 的域根的 /wp-admin/options-permalink.php(和 no .htaccess),第一个选项,即标准选项,正在运行, http://www.example.com/?p=123

所以我认为可以在自定义选项中重现(仅重现)完全相同的东西...我尝试了 /?p=%post_id%?p=%post_id% 和许多其他的并且总是效果是navigation as /post-name/ not ?p=id ...所以,是行不通的? "Custom structure" 选项的表单框中 copy/paste 究竟需要什么?

我正在使用新的 wordpress v4.4

PS:https://codex.wordpress.org/Settings_Permalinks_Screen

处无线索

注意事项

为什么?

因为 "Custom permalink" 不起作用....或者,事实上,它在 Wordpress 上不起作用?

这是一个技术证明,工作时我可以做任何事情。
示例:需要哈希,?p=%post_id%#post-%post_id% 非常重要,用于跳转 幻灯片放映 ,以及滚动到页面标题。

在此示例中,问题不是某种 Apache 权限或 重写模式 ?p=123#post-123 在任何上下文中都可以正常工作(!),因此,Wordpress 必须符合要求 "Custom permalink".

这是一个有趣的问题,但几乎所有你想要的都不可能。

  1. 使用 %post_id% 两次:

    wp-includes/class-wp-rewrite.php 的第 558 行 (WP 4.4),我们有一个 for 循环,如果 %post_id% 已经找到并被使用,它就会中断。代码是:

    preg_match_all('/%.+?%/', $this->permalink_structure, $tokens);
    $tok_index = 1;
    foreach ( (array) $tokens[0] as $token) {
        if ( '%post_id%' == $token && ($tok_index <= 3) ) {
            $front = $front . 'date/';
            break;
        }
        $tok_index++;
    }
    
  2. 使用“#”:

    wp-admin/options-permalink.php中,当wp保存用户输入时我们有这行代码:

    $permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) );
    

    str_replace 无法使用 `#' 字符。

  3. 那个画面的用途:

    Wordpress 使用该配置屏幕 (1) 让用户选择是否使用漂亮的链接,以及 (2) 让用户有机会选择他的 posts 永久链接结构体。 Worpress 本身会处理大量无法更改的重写规则,除非您使用它 url rewrite functions。例如,页面和自定义帖子的处理方式不同。

您可以尝试将 /index.php?p=%post_id&var=%post_id% 添加为自定义结构以查看魔法(未)发生,但请记住:它仅适用于帖子。

希望对您有所帮助。