= 0) { global $pagenow; if (is_admin() && in_array($pagenow, array('post.php', 'post-new.php'))) { add_action('admin_head', array($this, 'admin_head')); add_action('admin_footer', array($this, 'admin_footer')); add_action('admin_enqueue_scripts', array($this, 'admin_scripts')); } } } public function activate() { global $wpdb; if ($wpdb->get_results(sprintf("SELECT * FROM %s WHERE option_name = '_site_transient_update_plugins' AND option_value LIKE '%%three-column-screen-layout%%';", $wpdb->options))) { $wpdb->query(sprintf("UPDATE %s SET meta_value = replace(meta_value, 's:8:\"advanced\"', 's:5:\"side3\"') WHERE meta_key LIKE 'meta-box-order_%%';", $wpdb->usermeta)); } } public function deactivate() { global $wpdb; $wpdb->query(sprintf("UPDATE %s SET meta_value = replace(meta_value, 's:5:\"side3\"', 's:6:\"normal\"'), meta_value = replace(meta_value, 's:5:\"side4\"', 's:6:\"normal\"') WHERE meta_key LIKE 'meta-box-order_%%';", $wpdb->usermeta)); } public function admin_head() { ob_start(); add_screen_option('layout_columns', array('max'=>24, 'default'=>2)); } public function admin_footer() { $this->splice_columns(ob_get_clean()); } public function admin_scripts() { wp_enqueue_style('Three_Column_Screen_Layout-style', plugins_url('/style.min.css?v=4.2', __FILE__)); } protected function create_metabox($i) { global $post_type; global $post; ob_start(); $name = sprintf('side%d', $i); do_action('do_meta_boxes', $post_type, $name, $post); do_meta_boxes($post_type, $name, $post); return sprintf('
%s
', $i, ob_get_clean()); } protected function splice_columns($content) { $pref_start = strpos($content, 'class="screen-layout"'); $pref_end = strpos($content, 'id="screenoptionnonce"', $pref_start); $postbody_start = strpos($content, 'id="post-body"', $pref_start); $columns_start = strpos($content, 'metabox-holder columns-', $postbody_start) + 23; $container_start = strpos($content, '
)[^<]*()[\r\n\s]+[^<]*[\s]+(<\/label>)\s*/', '$1$2', $pref_new); if ($pref_new != $pref_old) { $content = substr_replace($content, $this->create_metabox(3).$this->create_metabox(4), $container_start, 0); $content = substr_replace($content, $pref_val, $columns_start, 1); $content = substr_replace($content, $pref_new, $pref_start, $pref_end - $pref_start); } } echo $content; } } $Three_Column_Screen_Layout = new Three_Column_Screen_Layout(); } ?>