/** * Add modules to post_content before indexing a post (makes modules searchable) * @param WP_Post $post * @return void */ public function elasticPressPreIndex($post) { if (!$post) { return; } if (is_array($post)) { $postId = $post['ID']; } else { $postId = $post->ID; } $modules = \Modularity\Editor::getPostModules($postId); $onlyModules = array(); // Normalize modules array foreach ($modules as $sidebar => $item) { if (!isset($item['modules']) || count($item['modules']) === 0) { continue; } $onlyModules = array_merge($onlyModules, $item['modules']); } // Render modules and append to post content $rendered = "<br><br>"; foreach ($onlyModules as $module) { if ($module->post_type === 'mod-wpwidget') { continue; } $markup = \Modularity\App::$display->outputModule($module, array('edit_module' => false), array(), false); $rendered .= $markup; } if (is_array($post)) { $post['post_content'] .= $rendered; } else { $post->post_content .= $rendered; } return $post; }
/** * Gets modules that's saved to a post/page * @return string JSON ecoded object */ public function getPostModules() { if (!isset($_POST['id']) || empty($_POST['id']) || is_null($_POST['id'])) { echo 'false'; wp_die(); } echo json_encode(\Modularity\Editor::getPostModules($_POST['id'])); wp_die(); }
/** * 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); }