How to Override Page Template if URL matches query?


I have 4 Page Templates that my theme uses for all the pages – Default Template, Template One, Template Two and Template Three.

When the relevant Page Template is selected, it loads an Advanced Custom Fields Group which enables the user to build/design a specific page – i.e. Template Two is for an F.A.Q page, Template Three is for a photo gallery.

I have added 4 new links in the Admin Sidebar which directs the user to the "Add New Page" URL – "post-new.php?post_type=page". For each link, it appends the name of the template at the end of the URL i.e. "post-new.php?post_type=page&template=three".

I would like to have the Edit Page load the correct Page Template depending on the template dictated in the URL – "template=three" would load "Template Three".

I am able to do a check with the URL and form an if statement with the below code —

list($  uri, $  templateURL) = explode('&', $  _SERVER['REQUEST_URI']);     if ( $  templateURL == "template=services" ) {    ... 

I am struggling with how to hook this into functions.php. I have tried editing the below ( https://wordpress.stackexchange.com/a/231503/182411 ) but it isn’t working:

function wpse196289_default_page_template() {   global $  post;   list($  uri, $  templateURL) = explode('&', $  _SERVER['REQUEST_URI']);     if ( 'page' == $  post->post_type )     && ( $  templateURL == "template=services" )     {       $  post->page_template = "page-mytemplate.php";     } } add_action('add_meta_boxes', 'wpse196289_default_page_template', 1);