web-dev-qa-db-fra.com

Supprimer des pages et créer des pages par défaut pour tous les nouveaux sites réseau

J'utilise le code suivant pour supprimer certaines pages par défaut et pour créer également des pages par défaut pour tous les nouveaux sites créés. Cela fonctionne comme cela est maintenant, mais c’est uniquement parce que j’ai volontairement une erreur: chaque fois que je corrige, les fonctions cessent de fonctionner.

C’est la partie du code avec l’erreur intentionnelle (j’essayais également d’utiliser un code pour choisir un modèle de page par défaut, mais cela ne fonctionnait pas)

function create_my_pages3($blog_id, $user_id){
  switch_to_blog($blog_id);

  // not really need, new blogs shouldn't have any content
  if(get_page_by_title('contact')) return;

  // create each page
  $page_id = wp_insert_post(array(
    'post_title'     => 'Attorneys',
    'post_name'      => 'attorneys',
    'post_content'   => 'This is your Attorney page.',
    'post_status'    => 'publish',
    'post_author'    => $user_id, // or "1" (super-admin?)
    'post_type'      => 'page',
    'menu_order'     => 3,
    'comment_status' => 'closed',
    'ping_status'    => 'closed',
     // + see: http://codex.wordpress.org/Function_Reference/wp_insert_post
  ));  
update_post_meta( $id, '_wp_page_template', 'new_template.php' );

  restore_current_blog();
}

Heres le code complet

// Create Pages

add_action('wpmu_new_blog', 'create_my_pages', 10, 2);

function create_my_pages($blog_id, $user_id){
  switch_to_blog($blog_id);

  // not really need, new blogs shouldn't have any content
  if(get_page_by_title('About')) return;

  // create each page
  $page_id = wp_insert_post(array(
    'post_title'     => 'About',
    'post_name'      => 'about',
    'post_content'   => 'This is your about page',
    'post_status'    => 'publish',
    'post_author'    => $user_id, // or "1" (super-admin?)
    'post_type'      => 'page',
    'menu_order'     => 1,
    'comment_status' => 'closed',
    'ping_status'    => 'closed',
     // + see: http://codex.wordpress.org/Function_Reference/wp_insert_post
  ));  

  restore_current_blog();
}

add_action('wpmu_new_blog', 'create_my_pages2', 10, 2);

function create_my_pages2($blog_id, $user_id){
  switch_to_blog($blog_id);

  // not really need, new blogs shouldn't have any content
  if(get_page_by_title('Contact')) return;

  // create each page
  $page_id = wp_insert_post(array(
    'post_title'     => 'Contact',
    'post_name'      => 'contact',
    'post_content'   => 'This is your contact page.',
    'post_status'    => 'publish',
    'post_author'    => $user_id, // or "1" (super-admin?)
    'post_type'      => 'page',
    'menu_order'     => 2,
    'comment_status' => 'closed',
    'ping_status'    => 'closed',
     // + see: http://codex.wordpress.org/Function_Reference/wp_insert_post
  ));  

  restore_current_blog();
}

add_action('wpmu_new_blog', 'create_my_pages5', 10, 2);

function create_my_pages5($blog_id, $user_id){
  switch_to_blog($blog_id);

  // not really need, new blogs shouldn't have any content
  if(get_page_by_title('Attorneys')) return;

  // create each page
  $page_id = wp_insert_post(array(
    'post_title'     => 'Attorneys',
    'post_name'      => 'attorneys',
    'post_content'   => 'This is your Attorney page.',
    'post_status'    => 'publish',
    'post_author'    => $user_id, // or "1" (super-admin?)
    'post_type'      => 'page',
    'menu_order'     => 5,
    'comment_status' => 'closed',
    'ping_status'    => 'closed',
     // + see: http://codex.wordpress.org/Function_Reference/wp_insert_post
  ));  

  restore_current_blog();
}

add_action('wpmu_new_blog', 'create_my_pages3', 10, 2);

function create_my_pages3($blog_id, $user_id){
  switch_to_blog($blog_id);

  // not really need, new blogs shouldn't have any content
  if(get_page_by_title('contact')) return;

  // create each page
  $page_id = wp_insert_post(array(
    'post_title'     => 'Attorneys',
    'post_name'      => 'attorneys',
    'post_content'   => 'This is your Attorney page.',
    'post_status'    => 'publish',
    'post_author'    => $user_id, // or "1" (super-admin?)
    'post_type'      => 'page',
    'menu_order'     => 3,
    'comment_status' => 'closed',
    'ping_status'    => 'closed',
     // + see: http://codex.wordpress.org/Function_Reference/wp_insert_post
  ));  
update_post_meta( $id, '_wp_page_template', 'new_template.php' );

  restore_current_blog();
}

add_action('wpmu_new_blog', 'create_my_pages4', 10, 2);

function create_my_pages4($blog_id, $user_id){
  switch_to_blog($blog_id);

  // not really need, new blogs shouldn't have any content
  if(get_page_by_title('Practice Areas')) return;

  // create each page
  $page_id = wp_insert_post(array(
    'post_title'     => 'Practice Areas',
    'post_name'      => 'practice-areas',
    'post_content'   => 'This is your practice areas page.',
    'post_status'    => 'publish',
    'post_author'    => $user_id, // or "1" (super-admin?)
    'post_type'      => 'page',
    'menu_order'     => 4,
    'comment_status' => 'closed',
    'ping_status'    => 'closed',
     // + see: http://codex.wordpress.org/Function_Reference/wp_insert_post
  ));  

  restore_current_blog();
}

// Delete Pages
add_action('wpmu_new_blog', 'delete_my_pages', 10, 2);
function delete_my_pages(){
$post = get_page_by_path('hello-world',OBJECT,'post');
if ($post)
  wp_delete_post($post->ID,true);
}

add_action('wpmu_new_blog', 'delete_my_pages2', 10, 2);
function delete_my_pages2(){
$page = get_page_by_path('login',OBJECT,'page');
if ($page)
  wp_delete_post($page->ID,true);
}

add_action('wpmu_new_blog', 'delete_my_pages3', 10, 2);
function delete_my_pages3(){
$page = get_page_by_path('logout',OBJECT,'page');
if ($page)
  wp_delete_post($page->ID,true);
}

add_action('wpmu_new_blog', 'delete_my_pages4', 10, 2);
function delete_my_pages4(){
$page = get_page_by_path('lostpassword',OBJECT,'page');
if ($page)
  wp_delete_post($page->ID,true);
}

add_action('wpmu_new_blog', 'delete_my_pages5', 10, 2);
function delete_my_pages5(){
$page = get_page_by_path('register',OBJECT,'page');
if ($page)
  wp_delete_post($page->ID,true);
}

add_action('wpmu_new_blog', 'delete_my_pages6', 10, 2);
function delete_my_pages6(){
$page = get_page_by_path('resetpass',OBJECT,'page');
if ($page)
  wp_delete_post($page->ID,true);
}

add_action('wpmu_new_blog', 'delete_my_pages7', 10, 2);
function delete_my_pages7(){
$page = get_page_by_path('sample-page',OBJECT,'page');
if ($page)
  wp_delete_post($page->ID,true);
}

add_action('wpmu_new_blog', 'delete_my_pages8', 10, 2);
function delete_my_pages8(){
$page = get_page_by_path('store',OBJECT,'page');
if ($page)
  wp_delete_post($page->ID,true);
}

Comment puis-je nettoyer cela et le faire fonctionner sans l'erreur intentionnelle?

EDIT

L'erreur est vue ici -

// not really need, new blogs shouldn't have any content
  if(get_page_by_title('contact')) return;

où il est écrit 'contact' c'est supposé correspondre à cela (avocats)

// create each page
      $page_id = wp_insert_post(array(
        'post_title'     => 'Attorneys',
        'post_name'      => 'attorneys',

Si toutefois je change de contact avec des avocats, alors toutes les pages supprimées réapparaissent.

2
Rich

Je ne sais vraiment pas où votre logique échoue et je n'ai pas révisé chacun de vos crochets insérez/supprimez . Mais le code peut être grandement simplifié pour appeler seulement chaque fonction une fois , facilitant ainsi son fonctionnement.

add_action( 'wpmu_new_blog', 'setup_blog_wpse_114119', 10, 2 );

function setup_blog_wpse_114119( $blog_id, $user_id )
{
    create_pages_wpse_114119( $blog_id, $user_id );
    delete_pages_wpse_114119( $blog_id, $user_id );
}

function create_pages_wpse_114119( $blog_id, $user_id )
{
    $defaults = array(
        array(
            'post_title'     => 'About',
            'post_name'      => 'about',
            'post_content'   => 'This is your about page',
            'post_status'    => 'publish',
            'post_author'    => $user_id, // or "1" (super-admin?)
            'post_type'      => 'page',
            'menu_order'     => 1,
            'comment_status' => 'closed',
            'ping_status'    => 'closed',
        ),
        array(
            'post_title'     => 'Contact',
            'post_name'      => 'contact',
            'post_content'   => 'This is your contact page.',
            'post_status'    => 'publish',
            'post_author'    => $user_id, // or "1" (super-admin?)
            'post_type'      => 'page',
            'menu_order'     => 2,
            'comment_status' => 'closed',
            'ping_status'    => 'closed',
        )
    );  
    # Not really necessary, but good practice: http://wordpress.stackexchange.com/q/89113/12615
    $current_blog = get_current_blog_id();
    switch_to_blog( $blog_id );
    foreach( $defaults as $page )
    {
        // not really need, new blogs shouldn't have any content
        if( get_page_by_title( $page['post_title'] ) ) 
            continue;
        wp_insert_post( $page );
    }
    switch_to_blog( $current_blog );
}

function delete_pages_wpse_114119( $blog_id, $user_id )
{
    $defaults = array( 
        'post' => 'hello-world', 
        'page' => 'sample-page' 
    );
    $current_blog = get_current_blog_id();
    switch_to_blog( $blog_id );
    foreach( $defaults as $type => $slug )
    {
        if( $post = get_page_by_path( $slug, OBJECT, $type ) )
            wp_delete_post( $post->ID, true );
    }
    switch_to_blog( $current_blog );
}
1
brasofilo