Crear páginas automáticamente si no existen

4

Tengo una instancia de WPMU que funciona menos como una red de blogs y más como una aplicación holística. Necesito hacer una verificación y ver si existen 3 páginas con las babosas 'inicio', 'inicio de sesión' y 'contraseña'. Si no, necesito que el sistema los genere automáticamente. Si lo hace, necesito que el sistema ignore.

Ahora mismo tengo el siguiente código y, por algún motivo, genera 5 publicaciones cada vez que se carga una página. ¿Alguien tiene consejos sobre cómo podría lograr esto mejor?

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 );
    }
    
pregunta Jake Lisby 30.01.2013 - 23:42

2 respuestas

3

Creo que quieres:

if( get_page_by_title( 'home' ) == NULL )
    create_pages_fly( 'home' );

Su condición original if dice que si la página existe (no es igual a NULL), cree la página. Además, el segundo argumento debería ser una cadena, aunque en realidad no importa en este caso, ya que de todos modos, de manera predeterminada, será 'page' .

    
respondido por el Milo 31.01.2013 - 00:32
2

Muy práctica función, adaptaré esto para algunos de mis trabajos. Una mejora menor que haría para simplificarlo un poco más es poner la acción get_by_title () en una función, de modo que solo puede llamar a eso en cada página.

Ej:

function create_page_if_null($target) {
    if( get_page_by_title($target) == NULL ) {
        create_pages_fly($target);
    }
}

function check_pages_live(){
    create_page_if_null('about');
    create_page_if_null('contact-us');
    create_page_if_null('home');
    create_page_if_null('news');
    create_page_if_null('privacy');
}
    
respondido por el Gabriel Connolly 12.05.2014 - 19:12

Lea otras preguntas en las etiquetas