Пример #1
0
 /**
  * replace all metas with corresponding text
  */
 public function replace_all_meta_in_text($post_id, $text)
 {
     if (trim($text) === '' || intval($post_id) === 0) {
         return '';
     }
     $base = new Essential_Grid_Base();
     $meta_link = new Essential_Grid_Meta_Linking();
     $cmeta = $this->get_all_meta();
     //process meta tags:
     $arr_matches = array();
     preg_match_all("/%[^%]*%/", $text, $arr_matches);
     if (!empty($arr_matches)) {
         $my_post = get_post($post_id, ARRAY_A);
         foreach ($arr_matches as $matches) {
             if (is_array($matches)) {
                 foreach ($matches as $match) {
                     $meta = trim(str_replace('%', '', $match));
                     $meta_value = get_post_meta($post_id, $meta, true);
                     if (!empty($cmeta)) {
                         foreach ($cmeta as $me) {
                             if ('eg-' . $me['handle'] == $meta) {
                                 if ($me['type'] == 'image') {
                                     if (intval($meta_value) > 0) {
                                         //get URL to Image
                                         $img = wp_get_attachment_image_src($meta_value, 'full');
                                         if ($img !== false) {
                                             $meta_value = $img[0];
                                         } else {
                                             $meta_value = '';
                                         }
                                     } else {
                                         $meta_value = '';
                                     }
                                 }
                                 if ($meta_value == '' && isset($me['default'])) {
                                     $meta_value = $me['default'];
                                 }
                                 break;
                             }
                         }
                     }
                     //check woocommerce
                     if (Essential_Grid_Woocommerce::is_woo_exists()) {
                         $wc_text = Essential_Grid_Woocommerce::get_value_by_meta($post_id, $meta);
                         if ($wc_text !== '') {
                             $meta_value = $wc_text;
                         }
                     }
                     if (empty($meta_value) && !empty($my_post)) {
                         //try to get from post
                         switch ($meta) {
                             //Post elements
                             case 'post_url':
                                 $post_id = $base->getVar($my_post, 'ID', '');
                                 $meta_value = get_permalink($post_id);
                                 break;
                             case 'post_id':
                                 $meta_value = $base->getVar($my_post, 'ID', '');
                                 break;
                             case 'title':
                                 $meta_value = $base->getVar($my_post, 'post_title', '');
                                 break;
                             case 'excerpt':
                                 $meta_value = trim($base->getVar($my_post, 'post_excerpt'));
                                 if (empty($meta_value)) {
                                     $meta_value = trim($base->getVar($my_post, 'post_content'));
                                 }
                                 $meta_value = strip_tags($meta_value);
                                 //,"<b><br><br/><i><strong><small>"
                                 break;
                             case 'meta':
                                 $m = new Essential_Grid_Meta();
                                 $meta_value = $m->get_meta_value_by_handle($my_post['ID'], $meta);
                                 break;
                             case 'alias':
                                 $meta_value = $base->getVar($my_post, 'post_name');
                                 break;
                             case 'content':
                                 $meta_value = $base->getVar($my_post, 'post_content');
                                 break;
                             case 'link':
                                 $meta_value = get_permalink($my_post['ID']);
                                 break;
                             case 'date':
                                 $postDate = $base->getVar($my_post, "post_date_gmt");
                                 $meta_value = $base->convert_post_date($postDate);
                                 break;
                             case 'date_modified':
                                 $dateModified = $base->getVar($my_post, "post_modified");
                                 $meta_value = $base->convert_post_date($dateModified);
                                 break;
                             case 'author_name':
                                 $authorID = $base->getVar($my_post, 'post_author');
                                 $meta_value = get_the_author_meta('display_name', $authorID);
                                 break;
                             case 'num_comments':
                                 $meta_value = $base->getVar($my_post, 'comment_count');
                                 break;
                             case 'cat_list':
                                 $use_taxonomies = false;
                                 $postCatsIDs = $base->getVar($my_post, 'post_category');
                                 if (empty($postCatsIDs) && isset($my_post['post_type'])) {
                                     $postCatsIDs = array();
                                     $obj = get_object_taxonomies($my_post['post_type']);
                                     if (!empty($obj) && is_array($obj)) {
                                         foreach ($obj as $tax) {
                                             $use_taxonomies[] = $tax;
                                             $new_terms = get_the_terms($my_post['ID'], $tax);
                                             if (is_array($new_terms) && !empty($new_terms)) {
                                                 foreach ($new_terms as $term) {
                                                     $postCatsIDs[$term->term_id] = $term->term_id;
                                                 }
                                             }
                                         }
                                     }
                                 }
                                 $meta_value = $base->get_categories_html_list($postCatsIDs, true, ',', $use_taxonomies);
                                 break;
                             case 'tag_list':
                                 $meta_value = $base->get_tags_html_list($my_post['ID']);
                                 break;
                             default:
                                 $meta_value = apply_filters('essgrid_post_meta_content', $meta_value, $meta, $my_post['ID'], $my_post);
                                 break;
                                 break;
                         }
                         if (empty($meta_value)) {
                             //check if its linking
                             $meta_value = $meta_link->get_link_meta_value_by_handle($my_post['ID'], $meta);
                         }
                     }
                     $text = str_replace($match, $meta_value, $text);
                 }
             }
         }
     }
     return $text;
 }
Пример #2
0
 public function prepare_sorting_array_by_post($post, $order_by)
 {
     $base = new Essential_Grid_Base();
     $link_meta = new Essential_Grid_Meta_Linking();
     $meta = new Essential_Grid_Meta();
     $m = $meta->get_all_meta(false);
     $lm = $link_meta->get_all_link_meta(false);
     $sorts = array();
     foreach ($order_by as $order) {
         switch ($order) {
             case 'date':
                 $sorts['date'] = strtotime($base->getVar($post, 'post_date'));
                 break;
             case 'title':
                 $sorts['title'] = substr($base->getVar($post, 'post_title', ''), 0, 10);
                 break;
             case 'excerpt':
                 $sorts['excerpt'] = substr(strip_tags($base->getVar($post, 'post_excerpt', '')), 0, 10);
                 break;
             case 'id':
                 $sorts['id'] = $base->getVar($post, 'ID');
                 break;
             case 'slug':
                 $sorts['slug'] = $base->getVar($post, 'post_name');
                 break;
             case 'author':
                 $authorID = $base->getVar($post, 'post_author');
                 $sorts['author'] = get_the_author_meta('display_name', $authorID);
                 break;
             case 'last-modified':
                 $sorts['last-modified'] = strtotime($base->getVar($post, 'post_modified'));
                 break;
             case 'number-of-comments':
                 $sorts['number-of-comments'] = $base->getVar($post, 'comment_count');
                 break;
             case 'random':
                 $sorts['random'] = rand(0, 9999);
                 break;
             default:
                 //check if meta. If yes, add meta values
                 if (strpos($order, 'eg-') === 0) {
                     if (!empty($m)) {
                         foreach ($m as $me) {
                             if ('eg-' . $me['handle'] == $order) {
                                 $sorts[$order] = $meta->get_meta_value_by_handle($post['ID'], $order);
                                 break;
                             }
                         }
                     }
                 } elseif (strpos($order, 'egl-') === 0) {
                     if (!empty($lm)) {
                         foreach ($lm as $me) {
                             if ('egl-' . $me['handle'] == $order) {
                                 $sorts[$order] = $link_meta->get_link_meta_value_by_handle($post['ID'], $order);
                                 break;
                             }
                         }
                     }
                 }
                 break;
         }
     }
     //add woocommerce sortings
     if (Essential_Grid_Woocommerce::is_woo_exists()) {
         $product = get_product($post['ID']);
         if (!empty($product)) {
             foreach ($order_by as $order) {
                 switch ($order) {
                     case 'meta_num_total_sales':
                         $sorts['total-sales'] = get_post_meta($post['ID'], $order, true);
                         break;
                     case 'meta_num__regular_price':
                         $sorts['regular-price'] = $product->get_price();
                         break;
                         //case 'meta_num__sale_price':
                         //	$sorts['sale-price'] = $product->get_sale_price();
                         //break;
                     //case 'meta_num__sale_price':
                     //	$sorts['sale-price'] = $product->get_sale_price();
                     //break;
                     case 'meta__featured':
                         $sorts['featured'] = $product->is_featured() ? '1' : '0';
                         break;
                     case 'meta__sku':
                         $sorts['sku'] = $product->get_sku();
                         break;
                     case 'meta_num_stock':
                         $sorts['in-stock'] = $product->get_stock_quantity();
                         break;
                 }
             }
         }
     }
     return $sorts;
 }