コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
ファイル: Ajax.php プロジェクト: helsingborg-stad/Modularity
 /**
  * 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();
 }
コード例 #3
0
 /**
  * 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'));
 }
コード例 #4
0
 /**
  * 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);
 }