/** * generates posts list dropdown * * @param array $params * * @return string */ public static function postsDropdown($params = array()) { $params['post_type'] = meAnjanWqg_Utils::arrayValueAsArray($params, 'post_type', array('post')); if (in_array('any', $params['post_type'])) { $params['post_type'] = array('any'); } $attributes = meAnjanWqg_Utils::arrayValue($params, 'attributes', array()); $selected = meAnjanWqg_Utils::arrayValue($params, 'selected', ''); $options_only = isset($params['options_only']) && $params['options_only']; $html = ''; if (!$options_only) { $html .= "<select"; if (is_array($attributes) && count($attributes) > 0) { foreach ($attributes as $key => $value) { $html .= " {$key}='" . (string) $value . "'"; } } $html .= '>'; } $empty_value = meAnjanWqg_Utils::arrayValue($params, 'empty_value', FALSE); if (is_array($empty_value) && isset($empty_value['label']) && isset($empty_value['value'])) { $html .= "<option value='{$empty_value['value']}'>{$empty_value['label']}</option>"; } foreach ($params['post_type'] as $post_type) { $html .= '<optgroup label="' . $post_type . '">'; $params['post_type'] = array($post_type); $posts = self::getPosts($params); if (is_array($posts) && count($posts) > 0) { foreach ($posts as $p) { $html .= self::generatePostOption(array('post_type' => array($post_type), 'post' => $p, 'selected' => $selected, 'label_field' => meAnjanWqg_Utils::arrayValue($params, 'label_field', 'post_title'), 'label_field_extra' => meAnjanWqg_Utils::arrayValue($params, 'label_field_extra', ''), 'value_field' => meAnjanWqg_Utils::arrayValue($params, 'value_field', 'ID'), 'indent' => 0)); } } $html .= '</optgroup>'; } if (!$options_only) { $html .= '</select>'; } return $html; }
/** * Generates code and args for meta query * * @param $start_indent * * @return string */ public function generateMetaQueryArgCode($start_indent) { /** @var wpdb $wpdb */ global $wpdb; $metaCompareTypes = array('=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS'); $metaValueTypes = array('NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'); $start_indent = (int) $start_indent; if ($start_indent < 0) { $start_indent = 0; } $data = meAnjanWqg_Utils::arrayValue($this->_data, 'meta_query'); $code = array(); if (is_array($data) && count($data) > 0) { $queries = meAnjanWqg_Utils::arrayValueAsArray($data, 'queries', array()); if (!empty($queries)) { $code[] = meAnjanWqg_Utils::_l($start_indent, "'meta_query' => array(", 2); if (count($queries) > 1) { $relation = strtolower(meAnjanWqg_Utils::arrayValueAsString($data, 'relation', 'and', 'trim')); $relationEsc = $wpdb->_escape($relation); $code[] = meAnjanWqg_Utils::_l($start_indent + 1, "'relation' => '{$relationEsc}',", 2); $this->_args['meta_query']['relation'] = $relation; } foreach ($queries as $q) { $key = meAnjanWqg_Utils::arrayValueAsString($q, 'key', '', 'trim'); $compare = meAnjanWqg_Utils::arrayValueAsString($q, 'compare', '=', 'trim'); $value = meAnjanWqg_Utils::arrayValueAsString($q, 'value', '', 'trim'); $type = meAnjanWqg_Utils::arrayValueAsString($q, 'type', 'CHAR', 'trim'); if (!in_array($compare, $metaCompareTypes)) { $compare = '='; } if (!in_array($type, $metaValueTypes)) { $type = 'CHAR'; } $code[] = meAnjanWqg_Utils::_l($start_indent + 1, "array(", 2); $code[] = meAnjanWqg_Utils::_l($start_indent + 2, "'key' => '" . $wpdb->_escape($key) . "',", 1); $code[] = meAnjanWqg_Utils::_l($start_indent + 2, "'compare' => '" . $wpdb->_escape($compare) . "',", 1); $code[] = meAnjanWqg_Utils::_l($start_indent + 2, "'value' => '" . $wpdb->_escape($value) . "',", 1); $code[] = meAnjanWqg_Utils::_l($start_indent + 2, "'type' => '" . $wpdb->_escape($type) . "',", 1); $code[] = meAnjanWqg_Utils::_l($start_indent + 1, "),", 1); $this->_args['meta_query'][] = array('key' => $key, 'compare' => $compare, 'value' => $value, 'type' => $type); } $code[] = meAnjanWqg_Utils::_l($start_indent, "),", 2); } } if (!empty($code)) { $content = PHP_EOL; $content .= meAnjanWqg_Utils::_l($start_indent, "/* Meta query params */", 2); $content .= join('', $code); return $content; } return join('', $code); }
<?php /** * Created by PhpStorm. * User: anjan * Date: 11/17/15 * Time: 5:49 PM */ $criteriaData = meAnjanWqg_Utils::arrayValueAsArray($wqgData, 'date_query/criteria', array()); $criteriaData = array_values($criteriaData); // to force json array $dateCompareOperators = array('=', '!=', '>', '>=', '<', '<=', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'); ?> <table class="form-table"> <tr> <td> <label> <strong>Relation (#date_query/relation)</strong>Match all or match any?<br /> <?php $dateQueryRelations = array('and', 'or'); $selectedRelation = meAnjanWqg_Utils::arrayValueAsString($wqgData, 'date_query/relation', 'and', 'trim'); ?> <select id="<?php echo $idPrefix; ?> date-query-relation" name="date_query[relation]" class="chosen" data-placeholder="Select relation"> <?php foreach ($dateQueryRelations as $key) {
<?php } ?> </select> </label> </td> </tr> <tr> <td> <label> <strong>Post Type (#post_type)</strong>Get entries by selected post type<br/> <?php $post_types = get_post_types(array('_builtin' => TRUE)); asort($post_types); $selectedPostTypes = meAnjanWqg_Utils::arrayValueAsArray($wqgData, 'post/post_type', array('post')); ?> <select id="<?php echo $idPrefix; ?> post-type" name="post[post_type][]" style="1" class="chosen" multiple data-placeholder="Select post type(s)"> <option value="any">Any Type</option> <?php foreach ($post_types as $type) { ?> <option value="<?php echo $type; ?> " <?php