web-dev-qa-db-ja.com

すべての新しいネットワークサイトのページを削除してデフォルトページを作成する

次のコードを使用して、いくつかの既定のページを削除し、作成されたすべての新しいサイトに対していくつかの既定のページも作成します。それは今のように動作しますが、それは私が意図的にそこに私が修正するたびに関数が動作を停止するという間違いを持っ​​ているという理由であります。

これは意図的なエラーを含むコードの一部です(私はデフォルトのページテンプレートを選択するためにコードを使用しようとしましたが、うまくいきませんでした)。

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();
}

完全なコードをヘレス

// 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);
}

どうすればこれをクリーンアップし、意図的なエラーなしで正常に機能させることができますか?

EDIT

ここでエラーが見られます -

// 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',

連絡先を弁護士に変更した場合、削除されたすべてのページが再び表示されます。

2
Rich

私はあなたの論理がどこで失敗しているのか本当によくわからず、あなたの挿入/削除フックのそれぞれを修正していません。しかし、コードは各関数を一度だけ呼び出すように非常に単純化することができます。

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