In WordPress, the URL structure for child pages typically includes the parent page’s slug in the URL. For example, if you have a parent page with the slug “parent” and a child page with the slug “child,” the URL for the child page would be something like:

http://example.com/parent/child/

If you want to remove the parent slug from the child page URL, you can achieve this by using a custom function and modifying the permalink structure.

Add the following code to your functions.php file:

function custom_remove_parent_slug( $post_link, $post ) {
    if ( is_object( $post ) && $post->post_type == 'page' ) {
        $parent_post = get_post( $post->post_parent );

        if ( is_object( $parent_post ) ) {
            $post_link = str_replace( '/' . $parent_post->post_name . '/', '/', $post_link );
        }
    }

    return $post_link;
}
add_filter( 'post_type_link', 'custom_remove_parent_slug', 10, 2 );

function custom_rewrite_rules() {
    add_rewrite_rule(
        '([^/]+)/([^/]+)/?$',
        'index.php?pagename=$matches[2]',
        'top'
    );
}
add_action( 'init', 'custom_rewrite_rules' );

Go to your WordPress dashboard, navigate to “Settings” > “Permalinks,” and click the “Save Changes” button. This step refreshes your site’s permalinks.

Categorized in:

WordPress,

Tagged in: