I have a WPMU instance that works less like a network of blogs and more like a holistic application. I’m needing to do a check and see if 3 pages with the slugs ‘home’, ‘login’, and ‘password’ exist. If not, I need the system to generate them automatically. If it does, I need the system to ignore.
Right now I have the following code, and for some reason it is generating 5 posts each time a page is loaded. Anyone have advice on how I could better accomplish this?
function check_pages_live(){
if(get_page_by_title( 'home', page ) != NULL) {
create_pages_fly('home');
}
if(get_page_by_title( 'login', page ) != NULL) {
create_pages_fly('login');
}
if(get_page_by_title( 'password', page ) != NULL) {
create_pages_fly('password');
}
}
add_action('init','check_pages_live');
function create_pages_fly($pageName) {
$createPage = array(
'post_title' => $pageName,
'post_content' => 'Starter content',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'page',
'post_name' => $pageName
);
// Insert the post into the database
wp_insert_post( $createPage );
}
I think you want:
Your original
if
condition said if the page exists (does not equal NULL), then create the page. Also, the 2nd argument should be a string, though it doesn’t really matter in this case since it’ll just default to'page'
anyway.Very handy function, I’ll be adapting this for some of my work. One minor enhancement I’d make to streamline it a bit more is to put the get_by_title() action into a function, so you can just call that on each page.
Ex: