在多站点网络更新“无法解析主机”时,覆盖并继续更新

时间:2012-05-14 作者:TheLoneCuber

当WordPress网络更新脚本运行时,如果它到达一个它“无法解析”的站点,脚本将停止在那里,并且没有站点被更新。因此,如果1000个站点的多站点安装中有1个站点无法解析(即:域已过期),则无法将更新发布到网络中的任何站点。当然,您可以进入网络管理并删除该站点,但有时您没有时间,或者您知道该域将被续订(特别是如果它是您自己的域)。

有一次,有人指出我有一个解决办法。但唉,再多的谷歌搜索也帮不了我再次找到它。

有人知道如何做到这一点吗?

1 个回复
SO网友:brasofilo

我要说的是,这是不可能的。。。

以下是/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\' ] );
}
但从那以后,我们可以制作一个小工具来列出所有死亡的博客
和停用每个选项的选项。

复制自/wp-admin/includes/class-wp-ms-sites-list-table.php.

enter image description here

add_action( \'wp_network_dashboard_setup\', \'wpse_52040_network_dashboard_setup\' );

function wpse_52040_network_dashboard_setup() 
{
    wp_add_dashboard_widget( \'wpse_52040_dead_blogs_widget\', __( \'Dead blogs\' ), \'wpse_52040_dead_blogs\' );
}

function wpse_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>";
}

结束

相关推荐

在MultiSite中的循环外部获取_Author_meta的$user_id

因此,我目前正在运行一个多站点安装,超级管理员将创建所有新站点。我们使用的其中一个模板有一个贷款官员的博客页面。我正在扩展用户配置文件,以便新用户可以输入需要在其页面上显示的关键数据。除了创建站点时自动添加的超级管理员之外,每个站点只有一个用户。我发现,如果要使用该函数,需要指定用户IDthe_author_meta(); 循环外部。这是我的问题。我无法在模板中输入ID,因为每个新的贷款官员都将使用相同的主题模板。那么,如何使这些字段成为动态的呢?下面是配置文件部分的图像,以便LO在视觉上有所帮