Crie páginas automaticamente se elas não existirem

4

Eu tenho uma instância do WPMU que funciona menos como uma rede de blogs e mais como um aplicativo holístico. Eu estou precisando fazer uma checagem e ver se existem 3 páginas com as lesmas 'home', 'login' e 'password'. Se não, eu preciso do sistema para gerá-los automaticamente. Em caso afirmativo, preciso que o sistema ignore.

Neste momento, tenho o seguinte código e, por algum motivo, ele gera 5 postagens cada vez que uma página é carregada. Alguém tem conselhos sobre como eu poderia fazer isso melhor?

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

2 respostas

3

Eu acho que você quer:

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

Sua condição if original disse que se a página existir (não é igual a NULL), crie a página. Além disso, o segundo argumento deve ser uma string, embora realmente não importe nesse caso, já que o padrão é 'page' .

    
por Milo 31.01.2013 / 00:32
2

Função muito útil, adaptarei isso para alguns dos meus trabalhos. Um pequeno aprimoramento que eu faria para simplificar um pouco mais é colocar a ação get_by_title () em uma função, para que você possa chamar isso em cada página.

Ex:

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');
}
    
por Gabriel Connolly 12.05.2014 / 19:12