web-dev-qa-db-fra.com

Créer des pages automatiquement si elles n'existent pas

J'ai une instance WPMU qui fonctionne moins comme un réseau de blogs et plus comme une application holistique. J'ai besoin de faire une vérification et de voir si 3 pages avec les slugs 'home', 'login' et 'password' existent. Sinon, j'ai besoin du système pour les générer automatiquement. Si c'est le cas, j'ai besoin que le système ignore.

En ce moment, j'ai le code suivant, et pour une raison quelconque, il génère 5 publications à chaque fois qu'une page est chargée. Quelqu'un a un conseil sur la façon dont je pourrais mieux accomplir cela?

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 );
    }
4
Jake Lisby

Je pense que tu veux:

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

Votre condition if d'origine spécifiée si la page existe (n'est pas égal à NULL), créez la page. En outre, le deuxième argument devrait être une chaîne, bien que ce ne soit pas grave dans ce cas, car il ne contiendra que 'page' par défaut.

3
Milo

Fonction très pratique, je vais adapter cela à certains de mes travaux. Une amélioration mineure que je ferais pour rationaliser un peu plus est de mettre l'action get_by_title () dans une fonction, afin que vous puissiez simplement l'appeler sur chaque page.

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');
}
2
Gabriel Connolly