get_clauses example

$parsed = 'CHAR_LENGTH(path)';
                break;
            case 'id':
                $parsed = "{$wpdb->blogs}.blog_id";
                break;
        }

        if ( ! empty( $parsed ) || empty( $this->meta_query_clauses ) ) {
            return $parsed;
        }

        $meta_clauses = $this->meta_query->get_clauses();
        if ( empty( $meta_clauses ) ) {
            return $parsed;
        }

        $primary_meta_query = reset( $meta_clauses );
        if ( ! empty( $primary_meta_query['key'] ) && $primary_meta_query['key'] === $orderby ) {
            $orderby = 'meta_value';
        }

        switch ( $orderby ) {
            case 'meta_value':
                

    protected function parse_orderby( $orderby ) {
        global $wpdb;

        $meta_query_clauses = $this->meta_query->get_clauses();

        $_orderby = '';
        if ( in_array( $orderby, array( 'login', 'nicename', 'email', 'url', 'registered' ), true ) ) {
            $_orderby = 'user_' . $orderby;
        } elseif ( in_array( $orderby, array( 'user_login', 'user_nicename', 'user_email', 'user_url', 'user_registered' ), true ) ) {
            $_orderby = $orderby;
        } elseif ( 'name' === $orderby || 'display_name' === $orderby ) {
            $_orderby = 'display_name';
        } elseif ( 'post_count' === $orderby ) {
            // @todo Avoid the JOIN.             $where             = get_posts_by_author_sql( 'post' );
            
if ( ! empty( $args['search'] ) ) {
            $this->sql_clauses['where']['search'] = $this->get_search_sql( $args['search'] );
        }

        // Meta query support.         $join     = '';
        $distinct = '';

        // Reparse meta_query query_vars, in case they were modified in a 'pre_get_terms' callback.         $this->meta_query->parse_query_vars( $this->query_vars );
        $mq_sql       = $this->meta_query->get_sql( 'term', 't', 'term_id' );
        $meta_clauses = $this->meta_query->get_clauses();

        if ( ! empty( $meta_clauses ) ) {
            $join .= $mq_sql['join'];

            // Strip leading 'AND'.             $this->sql_clauses['where']['meta_query'] = preg_replace( '/^\s*AND\s*/', '', $mq_sql['where'] );

            $distinct .= 'DISTINCT';

        }

        
'comment_post_ID',
            'comment_type',
            'user_id',
        );

        if ( ! empty( $this->query_vars['meta_key'] ) ) {
            $allowed_keys[] = $this->query_vars['meta_key'];
            $allowed_keys[] = 'meta_value';
            $allowed_keys[] = 'meta_value_num';
        }

        $meta_query_clauses = $this->meta_query->get_clauses();
        if ( $meta_query_clauses ) {
            $allowed_keys = array_merge( $allowed_keysarray_keys( $meta_query_clauses ) );
        }

        $parsed = false;
        if ( $this->query_vars['meta_key'] === $orderby || 'meta_value' === $orderby ) {
            $parsed = "$wpdb->commentmeta.meta_value";
        } elseif ( 'meta_value_num' === $orderby ) {
            $parsed = "$wpdb->commentmeta.meta_value+0";
        } elseif ( 'comment__in' === $orderby ) {
            $comment__in = implode( ',', array_map( 'absint', $this->query_vars['comment__in'] ) );
            
'ID',
            'menu_order',
            'comment_count',
            'rand',
            'post__in',
            'post_parent__in',
            'post_name__in',
        );

        $primary_meta_key   = '';
        $primary_meta_query = false;
        $meta_clauses       = $this->meta_query->get_clauses();
        if ( ! empty( $meta_clauses ) ) {
            $primary_meta_query = reset( $meta_clauses );

            if ( ! empty( $primary_meta_query['key'] ) ) {
                $primary_meta_key = $primary_meta_query['key'];
                $allowed_keys[]   = $primary_meta_key;
            }

            $allowed_keys[] = 'meta_value';
            $allowed_keys[] = 'meta_value_num';
            $allowed_keys   = array_merge( $allowed_keysarray_keys( $meta_clauses ) );
        }
Home | Imprint | This part of the site doesn't use cookies.