/**
  * 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) {
示例#4
0
                    <?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