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; }
/** * 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; }
/** * Retrieve the value of post elements */ public function get_post_value($handle, $separator, $function, $meta) { $base = new Essential_Grid_Base(); $text = ''; switch ($handle) { //Post elements case 'post_id': $text = $base->getVar($this->post, 'ID', ''); break; case 'post_url': $post_id = $base->getVar($this->post, 'ID', ''); $text = get_permalink($post_id); break; case 'title': $text = $base->getVar($this->post, 'post_title', ''); break; case 'excerpt': $text = trim($base->getVar($this->post, 'post_excerpt')); if (empty($text)) { //strip essential grid shortcode here $text = do_shortcode($base->strip_essential_shortcode($base->getVar($this->post, 'post_content'))); $text = preg_replace("/<style\\b[^>]*>(.*?)<\\/style>/s", "", $text); $text = preg_replace("/<script\\b[^>]*>(.*?)<\\/script>/s", "", $text); } $text = strip_tags($text); //,"<b><br><br/><i><strong><small>" break; case 'meta': $m = new Essential_Grid_Meta(); $text = $m->get_meta_value_by_handle($this->post['ID'], $meta); break; case 'alias': $text = $base->getVar($this->post, 'post_name'); break; case 'content': $text = apply_filters('the_content', $base->getVar($this->post, 'post_content')); break; case 'link': $text = get_permalink($this->post['ID']); break; case 'date': $postDate = $base->getVar($this->post, "post_date_gmt"); $text = $base->convert_post_date($postDate); break; case 'date_modified': $dateModified = $base->getVar($this->post, "post_modified"); $text = $base->convert_post_date($dateModified); break; case 'author_name': $authorID = $base->getVar($this->post, 'post_author'); $text = get_the_author_meta('display_name', $authorID); break; case 'num_comments': $text = $base->getVar($this->post, 'comment_count'); break; case 'cat_list': $use_taxonomies = false; $postCatsIDs = $base->getVar($this->post, 'post_category'); if (empty($postCatsIDs) && isset($this->post['post_type'])) { $postCatsIDs = array(); $obj = get_object_taxonomies($this->post['post_type']); if (!empty($obj) && is_array($obj)) { foreach ($obj as $tax) { $use_taxonomies[] = $tax; $new_terms = get_the_terms($this->post['ID'], $tax); if (is_array($new_terms) && !empty($new_terms)) { foreach ($new_terms as $term) { $postCatsIDs[$term->term_id] = $term->term_id; } } } } } $text = $base->get_categories_html_list($postCatsIDs, $function, $separator, $use_taxonomies); break; case 'tag_list': $text = $base->get_tags_html_list($this->post['ID'], $separator, $function); break; } return $text; }