Add specific word to default page permalink

There might be better ways using filters or apache/nginx rewrites, but here are two ideas to consider from the admin UI point of view (untested):

Idea 1:

You can always visit /wp-admin/options-general.php change the whole the site url:

siteurl

but I don’t think you’re looking for that, since this will also change the home url.

Idea 2:

You might therefore visit /wp-admin/options-permalink.php and try the following:

rewrite

to start with.

Idea 3:

Regarding the pages you could try to create a parent page with the info slug.

This will not cover everything you mentioned, but hopefully this help you along the way.

Update:

Here’s something you could try to explore further (I’m not sure this even works):

add_filter( 'rewrite_rules_array', 'my_rewrites' );

function my_rewrites( $rules )
{
    $newrules = array();
    foreach ( $rules as $rule => $rewrite )
    {
        if( '(' !==  substr( $rule, 0, 1 ) )
            $rule="info/" . $rule;

        unset( $rules[$rule] );
        $newrules[$rule] = $rules[$rule];
    }
    return $newrules;
}

You need to flush the rewrite rules, but you also need to modify the links trough the filters: post_link, term_link, page_link, tag_link, date_link, … etc.

So you could try something like:

// expand this to your needs, but there most be a single filter available instead?
$items = array( 'post', 'page', 'date', 'tag', 'term', 'year', 'month' ); 

foreach( $items as $item )
{
    add_filter( $item . '_link', 'my_link', 99, 2 );
}

function my_link( $permalink, $post ) 
{
   $permalink = str_replace( get_site_url(), get_site_url() . '/info',  $permalink );
    return $permalink;
}

I guess there are better hooks available and just better ways to try?

This is just what comes first to mind, so please check and modify it 😉