自升级到5.8以来,动态内容的URL结构已损坏

时间:2021-09-02 作者:Renae Bastholm

我最近从wordpress 4.7升级到了5.8(我知道有点大的飞跃)。

在旧版本中,我可以使用以下url结构动态更改页面内容:示例。本地/课程/1234/?在本例中,url将保持不变,但课程id为1234的内容将加载到页面中。由于升级,现在的情况是网站转到网站的主页,例如。本地,因此它似乎根本没有解释url参数。

如果我没有在url的末尾添加任何内容,例如。本地/课程//b>,然后页面显示课程列表(因此这仍然可以正常工作)。

我的职能。php文件没有改变(因为我没有升级主题),我的。htaccess没有更改。

每次我做出改变,我都会把permalinks冲洗干净,但仍然没有任何帮助。

不过,确实有效的url是一个示例。本地/课程/?id=1234(&;title=某种东西,所以我可以求助于此。然而,这并不理想,因为谷歌使用旧的url结构为网站(以及其他多站点网站)编制了索引。

提前感谢您的帮助。

更新一些额外信息:

title参数不起任何作用-它只是用于SEO目的

  • 我已经禁用了所有插件(不包括我编写的处理显示的插件),但它仍然不起作用,我的自定义插件和父插件(我没有升级此插件)以及子主题与旧wp版本下的插件和子主题完全一样,我的自定义模板处理获取URL参数的操作,但是当您将URL与/courses/1234/as一起使用时,此文件现在似乎无法运行我在一开始有一个出口,但它没有运行
  • 在我的自定义模板中,我提取了课程id ie 1234,我用它来调用一些Ajax,它从外部源获取课程详细信息并显示结果。我唯一的重写规则处理404个错误,以阻止wp猜测正确的页面

  • 1 个回复
    SO网友:Renae Bastholm

    在做了大量的研究和尝试不同的事情后,我看到了这个页面https://core.trac.wordpress.org/ticket/50976 这与我的问题不完全相同,但这也是破坏我的网站的原因。

    为了解决这个问题,不必更改我的URL结构,也不必让google重新索引我的所有页面,我必须使用某些模板(利用了示例。local/courses/1234/?title=something)获取所有页面的列表,然后为每个页面创建一个add\\u rewrite\\u规则。

    /**
     * Register new rewrite rules
     */
    function rewrite_pagination_rules_for_content_items() {
        
        /* get list of pages the rewrite is required for based on a particular template used */
        $pages = get_list_of_paginated_pages();
    
        foreach($pages as $page) {
            /* strip off domain name and first slash */
            $domain_start = strpos($page[\'url\'],\'://\');
            $domain_finish = strpos($page[\'url\'],\'/\',$domain_start+3);
            $url = substr($page[\'url\'],$domain_finish+1);
            $post_id = $page[\'id\'];
            //echo \'<br/>url = \'.$url.\' post id = \'.$post_id;
            add_rewrite_rule("^(.*){$url}([0-9]*)/?$",
                    \'index.php?page_id=\'.$post_id,
                    \'top\');
            add_rewrite_tag(\'%id%\',\'([0-9]*)\');
        }
    }
    add_action(\'init\', \'rewrite_pagination_rules_for_content_items\');
    

    相关推荐

    Running WP_Upgrader via Cron

    我编写了在页面运行时更新核心的代码。当我通过管理挂钩使用代码时,一切都正常admin_init 但当我将其添加到cron函数或通过任何前端挂钩运行它时,它不起作用(致命错误)init 或template_redirect 等因此,我试图要求class-wp-upgrader.php 文件add_action(\'init\', \'kit_wp_auto_update\'); // doesn\'t work // add_action(\'admin_init\', \'kit_wp_auto_