To alter the page ID before the query is run, hook the request
filter.
If you’re using pretty permalinks, pagename
will be set, you can overwrite pagename
with another page slug:
function wpd_265903_request( $request ) {
if( isset( $request['pagename'] ) ){ // any page
$request['pagename'] = 'some-other-slug';
}
return $request;
}
add_filter('request', 'wpd_265903_request');
or you can unset pagename and set page_id
:
function wpd_265903_request( $request ) {
if( isset( $request['pagename'] ) ){
unset( $request['pagename'] );
$request['page_id'] = 106;
}
return $request;
}
add_filter( 'request', 'wpd_265903_request' );