Пример #1
0
/**
 * Removes some default WordPress Admin Sidebar items and adds our own
 */
function replace_book_admin_menu()
{
    global $menu, $submenu;
    // Modify $menu and $submenu global arrays to do some tasks, such as adding a new separator, moving items from one menu into another, and reordering sub-menu items.
    $menu[13] = $menu[60];
    // Relocate Appearance
    unset($menu[60]);
    $menu[68] = $menu[10];
    // Relocate Media
    unset($menu[10]);
    $menu[69] = $menu[25];
    // Relocate Comments
    unset($menu[25]);
    // Remove items we don't want the user to see.
    remove_submenu_page('index.php', 'my-sites.php');
    remove_submenu_page('options-general.php', 'options-general.php');
    remove_submenu_page('options-general.php', 'options-writing.php');
    remove_submenu_page('options-general.php', 'options-reading.php');
    remove_submenu_page('options-general.php', 'options-discussion.php');
    remove_submenu_page('options-general.php', 'options-media.php');
    remove_submenu_page('options-general.php', 'options-permalink.php');
    remove_menu_page('edit.php?post_type=part');
    remove_menu_page('edit.php');
    remove_menu_page('edit.php?post_type=front-matter');
    remove_menu_page('edit.php?post_type=back-matter');
    remove_menu_page('edit.php?post_type=metadata');
    remove_menu_page('link-manager.php');
    remove_menu_page('edit.php?post_type=page');
    add_theme_page(__('Theme Options', 'pressbooks'), __('Theme Options', 'pressbooks'), 'edit_theme_options', 'pressbooks_theme_options', array('\\Pressbooks\\Modules\\ThemeOptions\\ThemeOptions', 'render'));
    // TODO
    remove_submenu_page('tools.php', 'tools.php');
    remove_submenu_page('tools.php', 'import.php');
    remove_submenu_page('tools.php', 'export.php');
    remove_submenu_page('tools.php', 'ms-delete-site.php');
    remove_submenu_page('edit.php?post_type=chapter', 'edit.php?post_type=chapter');
    // Organize
    $page = add_submenu_page('edit.php?post_type=chapter', __('Organize', 'pressbooks'), __('Organize', 'pressbooks'), 'edit_posts', 'pressbooks', __NAMESPACE__ . '\\display_organize');
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ($hook == $page) {
            wp_enqueue_style('pb-organize');
            wp_enqueue_script('jquery-blockui');
            wp_enqueue_script('pb-organize');
            wp_localize_script('pb-organize', 'PB_OrganizeToken', array('orderNonce' => wp_create_nonce('pb-update-book-order'), 'exportNonce' => wp_create_nonce('pb-update-book-export'), 'showTitleNonce' => wp_create_nonce('pb-update-book-show-title'), 'privacyNonce' => wp_create_nonce('pb-update-book-privacy'), 'private' => __('Private', 'pressbooks'), 'published' => __('Published', 'pressbooks'), 'public' => __('Public', 'pressbooks')));
        }
    });
    if (current_user_can('publish_posts')) {
        $add_chapter = $submenu['edit.php?post_type=chapter'][10];
        unset($submenu['edit.php?post_type=chapter'][10]);
        $add_part = $submenu['edit.php?post_type=part'][10];
        $add_front_matter = $submenu['edit.php?post_type=front-matter'][10];
        $add_back_matter = $submenu['edit.php?post_type=back-matter'][10];
        array_push($submenu['edit.php?post_type=chapter'], $add_part, $add_chapter, $add_front_matter, $add_back_matter);
    }
    if (is_super_admin()) {
        // If network administrator, give the option to see chapter, front matter and back matter types.
        $front_matter_types = $submenu['edit.php?post_type=front-matter'][15];
        $back_matter_types = $submenu['edit.php?post_type=back-matter'][15];
        if (isset($submenu['edit.php?post_type=chapter'][15])) {
            $chapter_types = $submenu['edit.php?post_type=chapter'][15];
            unset($submenu['edit.php?post_type=chapter'][15]);
            array_push($submenu['edit.php?post_type=chapter'], $chapter_types, $front_matter_types, $back_matter_types);
        } else {
            array_push($submenu['edit.php?post_type=chapter'], $front_matter_types, $back_matter_types);
        }
    }
    // Book Information
    $metadata = new \Pressbooks\Metadata();
    $meta = $metadata->getMetaPost();
    if (!empty($meta)) {
        $book_info_url = 'post.php?post=' . absint($meta->ID) . '&action=edit';
    } else {
        $book_info_url = 'post-new.php?post_type=metadata';
    }
    $page = add_menu_page(__('Book Info', 'pressbooks'), __('Book Info', 'pressbooks'), 'edit_posts', $book_info_url, '', 'dashicons-info', 12);
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ('post-new.php' == $hook || 'post.php' == $hook) {
            if ('metadata' == get_post_type()) {
                wp_enqueue_script('pb-metadata');
                wp_localize_script('pb-metadata', 'PB_BookInfoToken', array('bookInfoMenuId' => preg_replace('|[^a-zA-Z0-9_:.]|', '-', $page)));
            }
        }
    });
    // Export
    $page = add_menu_page(__('Export', 'pressbooks'), __('Export', 'pressbooks'), 'edit_posts', 'pb_export', __NAMESPACE__ . '\\display_export', 'dashicons-migrate', 14);
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ($hook == $page) {
            wp_enqueue_style('pb-export');
            wp_enqueue_script('pb-export');
            wp_localize_script('pb-export', 'PB_ExportToken', array('mobiConfirm' => __('EPUB is required for MOBI export. Would you like to reenable it?', 'pressbooks')));
        }
    });
    // Publish
    require dirname(__FILE__) . '/class-pb-publishoptions.php';
    $subclass = '\\Pressbooks\\Admin\\PublishOptions';
    $option = get_option('pressbooks_ecommerce_links', $subclass::getDefaults());
    $page = new $subclass($option);
    $page->init();
    wp_cache_delete('pressbooks_ecommerce_links_version', 'options');
    $version = get_option('pressbooks_ecommerce_links_version', 0);
    if ($version < $page::$currentVersion) {
        $page->upgrade($version);
        update_option('pressbooks_ecommerce_links_version', $page::$currentVersion, false);
        if (WP_DEBUG) {
            error_log('Upgraded pressbooks_ecommerce_links from version ' . $version . ' --> ' . $page::$currentVersion);
        }
    }
    add_menu_page(__('Publish', 'pressbooks'), __('Publish', 'pressbooks'), 'edit_posts', 'pb_publish', array($page, 'render'), 'dashicons-products', 16);
    // Privacy
    add_options_page(__('Sharing and Privacy Settings', 'pressbooks'), __('Sharing &amp; Privacy', 'pressbooks'), 'manage_options', 'pressbooks_sharingandprivacy_options', __NAMESPACE__ . '\\display_privacy_settings');
    // Export
    require dirname(__FILE__) . '/class-pb-exportoptions.php';
    $subclass = '\\Pressbooks\\Admin\\ExportOptions';
    $option = get_option('pressbooks_export_options', $subclass::getDefaults());
    $page = new $subclass($option);
    $page->init();
    wp_cache_delete('pressbooks_export_options_version', 'options');
    $version = get_option('pressbooks_export_options_version', 0);
    if ($version < $page::$currentVersion) {
        $page->upgrade($version);
        update_option('pressbooks_export_options_version', $page::$currentVersion, false);
        if (WP_DEBUG) {
            error_log('Upgraded pressbooks_export_options from version ' . $version . ' --> ' . $page::$currentVersion);
        }
    }
    add_options_page(__('Export Settings', 'pressbooks'), __('Export', 'pressbooks'), 'manage_options', 'pressbooks_export_options', array($page, 'render'));
    // Import
    $page = add_management_page(__('Import', 'pressbooks'), __('Import', 'pressbooks'), 'edit_posts', 'pb_import', __NAMESPACE__ . '\\display_import');
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ($hook == $page) {
            wp_enqueue_script('pb-import');
        }
    });
    // Catalog
    add_submenu_page('index.php', __('My Catalog', 'pressbooks'), __('My Catalog', 'pressbooks'), 'read', 'pb_catalog', '\\Pressbooks\\Catalog::addMenu');
}
Пример #2
0
// Shortcodes
// -------------------------------------------------------------------------------------------------------------------
remove_filter('the_content', 'wpautop');
add_filter('the_content', 'wpautop', 12);
// execute wpautop after shortcode processing
$_ = \Pressbooks\Shortcodes\Footnotes\Footnotes::getInstance();
$_ = \Pressbooks\Shortcodes\Generics\Generics::getInstance();
$_ = \Pressbooks\Shortcodes\WikiPublisher\Glyphs::getInstance();
// -------------------------------------------------------------------------------------------------------------------
// Upgrade Book Metadata
// -------------------------------------------------------------------------------------------------------------------
if (\Pressbooks\Book::isBook()) {
    add_action('init', function () {
        $meta_version = get_option('pressbooks_metadata_version', 0);
        if ($meta_version < \Pressbooks\Metadata::$currentVersion) {
            $metadata = new \Pressbooks\Metadata();
            $metadata->upgrade($meta_version);
            update_option('pressbooks_metadata_version', \Pressbooks\Metadata::$currentVersion);
        }
    }, 1000);
}
// -------------------------------------------------------------------------------------------------------------------
// Upgrade Taxonomies
// -------------------------------------------------------------------------------------------------------------------
if (\Pressbooks\Book::isBook()) {
    add_action('init', function () {
        $taxonomy_version = get_option('pressbooks_taxonomy_version', 0);
        if ($taxonomy_version < \Pressbooks\Taxonomy::$currentVersion) {
            $taxonomy = new \Pressbooks\Taxonomy();
            $taxonomy->upgrade($taxonomy_version);
            update_option('pressbooks_taxonomy_version', \Pressbooks\Metadata::$currentVersion);
/**
 * Return book info metadata
 *
 * @return array
 */
function candela_get_book_info_meta()
{
    $book_information = array();
    $meta = new \Pressbooks\Metadata();
    $data = $meta->getMetaPostMetadata();
    $book_information = array_map('array_pop', $data);
    return $book_information;
}