Programmatically change post templates?

I need to change the template on several hundred pages on my site. Does anyone know if there is a command to do it programmatically? See the following code snippet; I’d like to replace my comment inside the loop with a function that will change the template of the current page:

query = new WP_Query($args);
while ( $query->have_posts() ) : $the_query->the_post();
  if ( has_tag('tag-slug') )
  {
     /* CHANGE TEMPLATE OF $post */
  }
endwhile;
wp_reset_postdata();

4 Answers
4

I take it that you mean saving the pages with a new post-template to the DB? see if there’s anything in the post object that refers to the page-template, if so craft a query that updates that.

Update:

Taken from the wp_insert_post documentation

NOTE: The page_template key was removed from the $post table and is
now located in the wp_postmeta table. To set the page template of a
page, use update_post_meta instead with a meta key of
_wp_page_template.

So you can fetch the page template using get_post_meta, and update it with update_post_meta (Or set it with add_post_meta)

Leave a Comment