/** * Add buttons to admin bar (public) * @return void */ public function setupAdminBar() { // Link to editor from page add_action('admin_bar_menu', function () { $options = get_option('modularity-options'); if (is_admin() || !current_user_can('edit_posts')) { return; } global $wp_admin_bar; global $post; $editorLink = admin_url('options.php?page=modularity-editor&id=' . get_the_id()); $archiveSlug = \Modularity\Helper\Wp::getArchiveSlug(); if ($archiveSlug) { $editorLink = admin_url('options.php?page=modularity-editor&id=' . $archiveSlug); } if (isset($options['enabled-post-types']) && is_array($options['enabled-post-types']) && !in_array(get_post_type(), $options['enabled-post-types'])) { $editorLink = null; } $editorLink = apply_filters('Modularity/adminbar/editor_link', $editorLink, $post, $archiveSlug, $this->currentUrl()); if (empty($editorLink)) { return; } $wp_admin_bar->add_node(array('id' => 'modularity_editor', 'title' => __('Edit', 'modularity') . ' ' . strtolower(__('Modules', 'modularity')), 'href' => $editorLink, 'meta' => array('class' => 'modularity-editor-icon'))); }, 1050); }
/** * Initialize, get post's/page's modules and start output * @return void */ public function init() { global $post; global $wp_query; if (is_admin()) { return; } $archiveSlug = \Modularity\Helper\Wp::getArchiveSlug(); if (isset($wp_query->query['modularity_template']) && !empty($wp_query->query['modularity_template'])) { $this->modules = \Modularity\Editor::getPostModules($wp_query->query['modularity_template']); $this->options = get_option('modularity_' . $wp_query->query['modularity_template'] . '_sidebar-options'); } elseif ($archiveSlug) { $this->modules = \Modularity\Editor::getPostModules($archiveSlug); $this->options = get_option('modularity_' . $archiveSlug . '_sidebar-options'); } else { $this->modules = \Modularity\Editor::getPostModules($post->ID); $this->options = get_post_meta($post->ID, 'modularity-sidebar-options', true); } add_action('dynamic_sidebar_before', array($this, 'outputBefore')); add_action('dynamic_sidebar_after', array($this, 'outputAfter')); add_filter('sidebars_widgets', array($this, 'hideWidgets')); }
/** * Checks if a page has a modules * @return boolean */ public function hasModule() { global $post; $postId = null; $modules = array(); $archiveSlug = \Modularity\Helper\Wp::getArchiveSlug(); if ($archiveSlug) { $postId = $archiveSlug; } elseif (isset($post->ID)) { $postId = $post->ID; } else { return apply_filters('Modularity/hasModule', false, null); } $modules = \Modularity\Editor::getPostModules($postId); $modules = json_encode($modules); return apply_filters('Modularity/hasModule', strpos($modules, '"post_type":"' . $this->moduleSlug . '"') == true, $archiveSlug); }