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

4

J'ai une instance WPMU qui fonctionne moins comme un réseau de blogs que 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 tel est le cas, le système doit ignorer.

À l’heure actuelle, j’ai le code suivant et, pour une raison quelconque, il génère 5 publications à chaque chargement d’une page. Quelqu'un a-t-il des conseils sur la manière 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 );
    }
    
posée Jake Lisby 30.01.2013 - 23:42

2 réponses

3

Je pense que vous voulez:

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. De plus, le deuxième argument devrait être une chaîne, bien que cela n’ait pas vraiment d’importance dans ce cas car il ne fera que mettre par défaut 'page' de toute façon.

    
réponse donnée Milo 31.01.2013 - 00:32
2

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');
}
    
réponse donnée Gabriel Connolly 12.05.2014 - 19:12

Lire d'autres questions sur les étiquettes