如何消除 WordPress 中的顶级 URL slug,同时仍然能够访问子页面,特别是三级或更多级别的子页面?

问题描述 投票:0回答:1

这是 WordPress 固有的限制吗?例如,当我们有一个具有三级层次结构的 URL 结构时,是否无法删除第一级?目前,我必须根据需要将永久链接结构维护为“/%postname%/”。具体来说,我有一个名为“锦标赛名称”的父页面,包含子孙。当尝试访问不包含祖级 URL slug 但包含父级 URL slug 的子页面 URL 时,它会自动重定向以包含祖级 URL slug。

例如:我需要使用 URL http://local.test.com/team-name 访问现有页面 http://local.test.com/tournament-name/team-name/players/ /players/ - 没有“锦标赛名称”URL 关键字。

此更改是为了搜索引擎优化。

我可以删除

tournament-name
并将其重定向到 http://local.test.com/team-name/players/。但 WordPress 会自动将其重定向回 http://local.test.com/tournament-name/team-name/players/ - 导致无限循环。另外,我需要确保页面 http://local.test.com/tournament-name/team-name/players/ 显示与 http://local.test.com/tournament-name/ 相同的内容球队名称/球员/

我尝试过的代码如下

function custom_remove_parent_page_slug() {
    // List of parent pages for which you want to remove the slug
    $parent_pages = array(
        'tournament-name'
    );

    global $wp;

    $requested_url = home_url( $wp->request );

    foreach ( $parent_pages as $parent_page ) {
        $parent_page_url = home_url( $parent_page );

        // Check if the requested URL starts with the parent page URL
        if ( strpos( $requested_url, $parent_page_url ) === 0 ) {
            // Remove the parent page slug from the URL

            $child_page_url = str_replace( $parent_page_url, home_url(), $requested_url );

            // Check if the child page URL is different from the requested URL
            if ( $child_page_url !== $requested_url ) {
                // Redirect with a 301 status code
                wp_redirect( $child_page_url, 301 );
                exit;
            }
        }
    }
}
add_action( 'parse_request', 'custom_remove_parent_page_slug' );

请帮助我。预先感谢。

php wordpress url
1个回答
0
投票

您是否尝试过查看设置中的永久链接结构?

© www.soinside.com 2019 - 2024. All rights reserved.