public static function register_post_types() { global $blog_id; global $wp_post_types; // here comes the magic $standard_supports = array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes', 'post-formats'); self::$front_page_post_types = array("page"); foreach (MasterPress::$post_types as $post_type) { add_filter( 'views_edit-'.$post_type->name, array("MPC_Post", "manage_posts_views") ); if (in_array("front-page", explode(",", $post_type->supports))) { self::$front_page_post_types[] = $post_type->name; } MPU::create_icon_sprite($post_type->menu_icon, ""); if (!$post_type->_builtin) { if (!$post_type->disabled) { // check for any external post types that are no longer defined here if ($post_type->in_current_site()) { if (!$post_type->_external) { $labels = $post_type->labels; if (!isset($labels["all_items"]) || $labels["all_items"] == "") { $labels["all_items"] = $labels["name"]; } $params = array( "show_ui" => true, "show_in_menu" => (bool) $post_type->show_in_menu, "label" => $post_type->plural_name, "public" => true, "publicly_queryable" => (bool) $post_type->publicly_queryable, "menu_position" => (int) $post_type->menu_position, "show_in_nav_menus" => (bool) $post_type->show_in_nav_menus, "exclude_from_search" => (bool) $post_type->exclude_from_search, "labels" => $labels, "map_meta_cap" => (bool) $post_type->map_meta_cap, "hierarchical" => (bool) $post_type->hierarchical, "supports" => explode(",", $post_type->supports), "taxonomies" => array(), "permalink_epmask" => $post_type->permalink_epmask(), "has_archive" => (bool) $post_type->has_archive, "rewrite" => $post_type->rewrite, "query_var" => (bool) $post_type->query_var, "can_export" => (bool) $post_type->can_export, "capability_type" => $post_type->capability_type, "description" => $post_type->description ); if ($post_type->menu_icon != "") { $menu_icon = MPU::menu_icon($post_type->menu_icon, false); if ($menu_icon->exists()) { $params["menu_icon"] = MPU::img_url("blank.gif"); } } if ($post_type->capabilities && $post_type->capabilities != "") { $params["capabilities"] = $post_type->capabilities; } $register = apply_filters( "mp_can_register_post_type_{$post_type->name}", true ); $register = apply_filters( "mp_can_register_post_type", $register, $post_type->name ); if ( $register ) { $params = apply_filters( "mp_register_post_type_params", $params, $post_type->name ); $params = apply_filters( "mp_register_post_type_params_{$post_type->name}", $params ); register_post_type( $post_type->name, $params ); remove_post_type_support($post_type->name, "custom-fields"); } } } } } else { if ($post_type->disabled) { if (!$post_type->in_current_site()) { self::unregister_post_type($post_type->name); } } else { // add or remove support from the built-in post types $supports = explode(",", $post_type->supports); $remove_supports = array_diff($standard_supports, $supports); $add_supports = array_diff($supports, $standard_supports); foreach ($add_supports as $support) { add_post_type_support($post_type->name, $support); } foreach ($remove_supports as $support) { remove_post_type_support($post_type->name, $support); } } // label overrides $pto = &$wp_post_types[$post_type->name]; foreach ($post_type->labels as $key => $value) { $pto->labels->$key = $value; } } if (self::is_post_editor()) { $supports = explode(",", $post_type->supports); if (in_array("page-attributes", $supports) || $post_type->name == "page") { remove_post_type_support($post_type->name, "page-attributes"); add_post_type_support($post_type->name, "mp-page-attributes"); } } } // endforeach }