コード例 #1
0
 /**
  * Output by specific posts for load more
  */
 public function output_by_specific_posts()
 {
     $base = new Essential_Grid_Base();
     $item_skin = new Essential_Grid_Item_Skin();
     $item_skin->grid_id = $this->grid_id;
     $item_skin->set_grid_type($base->getVar($this->grid_params, 'layout', 'even'));
     $meta_c = new Essential_Grid_Meta();
     $item_skin->set_default_image_by_id($base->getVar($this->grid_postparams, 'default-image', 0, 'i'));
     $m = new Essential_Grid_Meta();
     $start_sortby = $base->getVar($this->grid_params, 'sorting-order-by-start', 'none');
     $start_sortby_type = $base->getVar($this->grid_params, 'sorting-order-type', 'ASC');
     if (!empty($this->filter_by_ids)) {
         $posts = Essential_Grid_Base::get_posts_by_ids($this->filter_by_ids, $start_sortby, $start_sortby_type);
     } else {
         return false;
     }
     $item_skin->init_by_id($base->getVar($this->grid_params, 'entry-skin', 0, 'i'));
     $order_by = explode(',', $base->getVar($this->grid_params, 'sorting-order-by', 'date'));
     if (!is_array($order_by)) {
         $order_by = array($order_by);
     }
     $lazy_load = $base->getVar($this->grid_params, 'lazy-loading', 'off');
     if ($lazy_load == 'on') {
         $item_skin->set_lazy_load(true);
     }
     $default_media_source_order = $base->getVar($this->grid_postparams, 'media-source-order', '');
     $item_skin->set_default_media_source_order($default_media_source_order);
     $default_lightbox_source_order = $base->getVar($this->grid_params, 'lb-source-order', '');
     $item_skin->set_default_lightbox_source_order($default_lightbox_source_order);
     $lightbox_mode = $base->getVar($this->grid_params, 'lightbox-mode', 'single');
     $lightbox_include_media = $base->getVar($this->grid_params, 'lightbox-exclude-media', 'off');
     $default_aj_source_order = $base->getVar($this->grid_params, 'aj-source-order', '');
     $item_skin->set_default_ajax_source_order($default_aj_source_order);
     $post_media_source_type = $base->getVar($this->grid_postparams, 'image-source-type', 'full');
     $default_video_poster_order = $base->getVar($this->grid_params, 'poster-source-order', '');
     $item_skin->set_default_video_poster_order($default_video_poster_order);
     $layout = $base->getVar($this->grid_params, 'layout', 'even');
     $layout_sizing = $base->getVar($this->grid_params, 'layout-sizing', 'boxed');
     if ($layout_sizing !== 'fullwidth' && $layout == 'masonry') {
         $item_skin->set_poster_cropping(true);
     }
     $skins_html = '';
     if ($lightbox_mode == 'content' || $lightbox_mode == 'content-gallery' || $lightbox_mode == 'woocommerce-gallery') {
         $item_skin->set_lightbox_rel('ess-' . $this->grid_id);
     }
     if (!empty($posts) && count($posts) > 0) {
         foreach ($posts as $key => $post) {
             //check if post should be visible or if its invisible on current grid settings
             $is_visible = $this->check_if_visible($post['ID'], $this->grid_id);
             if ($is_visible == false) {
                 continue;
             }
             // continue if invisible
             $post_media_source_data = $base->get_post_media_source_data($post['ID'], $post_media_source_type);
             $post_video_ratios = $m->get_post_video_ratios($post['ID']);
             $filters = array();
             //$categories = get_the_category($post['ID']);
             $categories = $base->get_custom_taxonomies_by_post_id($post['ID']);
             //$tags = wp_get_post_terms($post['ID']);
             $tags = get_the_tags($post['ID']);
             if (!empty($categories)) {
                 foreach ($categories as $key => $category) {
                     $filters[$category->term_id] = array('name' => $category->name, 'slug' => sanitize_key($category->slug));
                 }
             }
             if (!empty($tags)) {
                 foreach ($tags as $key => $taxonomie) {
                     $filters[$taxonomie->term_id] = array('name' => $taxonomie->name, 'slug' => sanitize_key($taxonomie->slug));
                 }
             }
             $filter_meta_selected = $base->getVar($this->grid_params, 'filter-selected', array());
             if (!empty($filter_meta_selected)) {
                 foreach ($filter_meta_selected as $filter) {
                     if (strpos($filter, 'meta-') === 0) {
                         $fil = str_replace('meta-', '', $filter);
                         $post_filter_meta = $meta_c->get_meta_value_by_handle($post['ID'], 'eg-' . $fil);
                         $arr = json_decode($post_filter_meta, true);
                         $cur_filter = is_array($arr) ? $arr : array($post_filter_meta);
                         //$cur_filter = explode(',', $post_filter_meta);
                         if (!empty($cur_filter)) {
                             foreach ($cur_filter as $k => $v) {
                                 if (trim($v) !== '') {
                                     $filters[sanitize_key($v)] = array('name' => $v, 'slug' => sanitize_key($v), 'parent' => '0');
                                 }
                             }
                         }
                     }
                 }
             }
             if (is_array($order_by) && !empty($order_by)) {
                 $sort = $this->prepare_sorting_array_by_post($post, $order_by);
                 $item_skin->set_sorting($sort);
             }
             if ($lightbox_mode == 'content' || $lightbox_mode == 'content-gallery' || $lightbox_mode == 'woocommerce-gallery') {
                 switch ($lightbox_mode) {
                     case 'content':
                         $lb_add_images = $base->get_all_content_images($post['ID']);
                         break;
                     case 'content-gallery':
                         $lb_add_images = $base->get_all_gallery_images($post['post_content'], true);
                         break;
                     case 'woocommerce-gallery':
                         $lb_add_images = array();
                         if (Essential_Grid_Woocommerce::is_woo_exists()) {
                             $lb_add_images = Essential_Grid_Woocommerce::get_image_attachements($post['ID'], true);
                         }
                         break;
                 }
                 $item_skin->set_lightbox_addition(array('items' => $lb_add_images, 'base' => $lightbox_include_media));
             }
             $item_skin->set_filter($filters);
             $item_skin->set_media_sources($post_media_source_data);
             $item_skin->set_media_sources_type($post_media_source_type);
             $item_skin->set_video_ratios($post_video_ratios);
             $item_skin->set_post_values($post);
             $item_skin->set_load_more();
             //switch to different skin
             $use_item_skin_id = json_decode(get_post_meta($post['ID'], 'eg_use_skin', true), true);
             if ($use_item_skin_id !== false && isset($use_item_skin_id[$this->grid_id]['use-skin'])) {
                 $use_item_skin_id = $use_item_skin_id[$this->grid_id]['use-skin'];
             } else {
                 $use_item_skin_id = -1;
             }
             $use_item_skin_id = apply_filters('essgrid_modify_post_item_skin', $use_item_skin_id, $post, $this->grid_id);
             $item_skin->switch_item_skin($use_item_skin_id);
             $item_skin->register_layer_css();
             $item_skin->register_skin_css();
             ob_start();
             $item_skin->output_item_skin();
             $skins_html .= ob_get_contents();
             ob_clean();
             ob_end_clean();
         }
     } else {
         return false;
     }
     return $skins_html;
 }