/** * 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(); }
/** * Outputs the widget content * @param array $args Widget arguments * @param array $instance Widget instance * @return void */ public function widget($args, $instance) { if (!isset($instance['module_id']) || !is_numeric($instance['module_id'])) { return false; } $display = \Modularity\App::$display; $module = \Modularity\Editor::getModule($instance['module_id'], array('hidden' => false, 'columnWidth' => isset($instance['module_size']) ? $instance['module_size'] : 'grid-md-4')); $display->outputModule($module, $args); }
/** * Display module with shortcode * @param array $args Args * @return string Html markup */ public function shortcodeDisplay($args) { $args = shortcode_atts(array('id' => false, 'inline' => true), $args); if (!is_numeric($args['id'])) { return; } $module = \Modularity\Editor::getModule($args['id']); if (substr($module->post_type, 0, 4) != 'mod-' || $module->post_status == 'private' && !is_user_logged_in()) { return; } $templatePath = \Modularity\Helper\Wp::getTemplate($module->post_type, 'module-inline', false); if (!$templatePath || $args['inline'] !== true) { $templatePath = \Modularity\Helper\Wp::getTemplate($module->post_type, 'module', false); } if (!$templatePath) { return false; } ob_start(); include $templatePath; $moduleMarkup = ob_get_clean(); $moduleMarkup = apply_filters('Modularity/Display/Markup', $moduleMarkup, $module); $moduleMarkup = apply_filters('Modularity/Display/' . $module->post_type . '/Markup', $moduleMarkup, $module); return '<div class="' . $module->post_type . '">' . $moduleMarkup . '</div>'; }
/** * 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); }