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:
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:
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 😉