Na atualização de rede do MultiSite “Não é possível resolver o host”, anule e continue atualizando

4

Quando o script de Atualização de Rede do WordPress é executado, se chegar a um site que "não pode ser resolvido", o script será interrompido e nenhum período será atualizado. Portanto, se houver 1 site em uma instalação MultiSite de 1000 sites que não será resolvida (ou seja: domínio expirado), você não poderá distribuir a atualização para nenhum site da sua Rede. É claro que você pode entrar no administrador da rede e remover o site, mas às vezes não tem tempo ou sabe que o domínio será renovado (especialmente se for o seu próprio domínio).

Eu já fui apontado para uma solução para isso. Mas, infelizmente, nenhuma pesquisa no Google me ajudou a encontrá-lo novamente.

Alguém sabe como conseguir isso?

    
por TheLoneCuber 14.05.2012 / 05:27

1 resposta

1

Eu diria que não é possível entrar nisso ...

Aqui está a parte relevante de /wp-admin/network/upgrade.php :

$blogs = $wpdb->get_results( "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC LIMIT {$n}, 5", ARRAY_A );
if ( empty( $blogs ) ) {
    echo '<p>' . __( 'All done!' ) . '</p>';
    break;
}
echo "<ul>";
foreach ( (array) $blogs as $details ) {
    $siteurl = get_blog_option( $details['blog_id'], 'siteurl' );
    echo "<li>$siteurl</li>";
    $response = wp_remote_get( trailingslashit( $siteurl ) . "wp-admin/upgrade.php?step=upgrade_db", array( 'timeout' => 120, 'httpversion' => '1.1' ) );
    if ( is_wp_error( $response ) )
        wp_die( sprintf( __( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: <em>%2$s</em>' ), $siteurl, $response->get_error_message() ) );
    do_action( 'after_mu_upgrade', $response );
    do_action( 'wpmu_upgrade_site', $details[ 'blog_id' ] );
}

Mas a partir disso podemos fazer uma pequena ferramenta para listar todos os blogs mortos.
E uma opção para desativar cada um * .

* copiado de /wp-admin/includes/class-wp-ms-sites-list-table.php .

add_action('wp_network_dashboard_setup','wpse_52040_network_dashboard_setup');functionwpse_52040_network_dashboard_setup(){wp_add_dashboard_widget('wpse_52040_dead_blogs_widget',__('Deadblogs'),'wpse_52040_dead_blogs');}functionwpse_52040_dead_blogs(){global$wpdb;$blogs=$wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->blogs} WHERE  spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC, 5", ARRAY_A ) );

    if ( empty( $blogs ) ) 
    {
        echo '<p>No blogs!</p>';
        break;
    }

    echo "<ul>";
    foreach ( (array) $blogs as $details ) 
    {
        $siteurl = get_blog_option( $details->blog_id, 'siteurl' );
        $response = wp_remote_get( trailingslashit( $siteurl ) . "wp-admin/", array( 'timeout' => 120, 'httpversion' => '1.1' ) );
        if ( is_wp_error( $response ) )
        {
            $error = $response->get_error_message();
            echo "<li><strong>$siteurl</strong><br />";
            echo '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deactivateblog&amp;id=' . $details->blog_id . '&amp;msg=' . urlencode( sprintf( __( 'You are about to deactivate the site %s' ), $details->domain ) ) ), 'confirm') ) . '">' . __( 'Deactivate' ) . '</a></span><br />';
            echo "Response -&gt; $error</li>";
        }
    }
   echo "</ul>";
}
    
por brasofilo 22.10.2012 / 12:59