web-dev-qa-db-fra.com

Rechercher plusieurs clés méta à la fois

Comment pourrais-je modifier la requête SQL suivante pour me permettre de rechercher plusieurs clés méta à la fois? par exemple. user_business AND user_about

À la fin, je chercherai environ 40 à 50 clés méta différentes; ou s'il y a une option pour rechercher TOUS, ce serait encore mieux.

<?php
/**
 * @package WordPress
 * @subpackage themename
 */

get_header(); ?>
<?php 
    $url = $_SERVER['REQUEST_URI'];
    $tokens = explode('/', $url);
    global $search;
    $search = $tokens[sizeof($tokens)-1];
    $searchQuery = str_replace("-", " ", $search);
?>
<?php echo $search; ?>
<div id="main">
        <div id="primary">
            <div id="content">
                <?php the_post(); ?>
                <div class="contentLeft">

                <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> role="article">

                        <h1 class="entry-title">Search Results for: <?php echo $searchQuery; ?></h1>

                    <div class="entry-content">

                        <?php
                        global $wpdb;
                        $usermeta = $wpdb->prefix . 'usermeta';

                        // get id of user
                        $select_user = "SELECT user_id FROM $usermeta WHERE meta_key = 'user_business' AND meta_value LIKE '%$searchQuery%'";
                        $user_id = $wpdb->get_var($select_user);
                        echo $user_id;
                        ?>

                    </div><!-- .entry-content -->
                </article><!-- #post-<?php the_ID(); ?> -->

                </div>
                <div class="contentRight"><?php if ( dynamic_sidebar('main-sidebar') ) : else : ?><?php endif; ?></div>
                </div>
            </div><!-- #content -->
        </div><!-- #primary -->
<?php get_footer(); ?>
3
Austin Biggs

En fait, la façon dont j'ai résolu ce problème était que, au lieu de fournir un nom de clé, j'ai laissé le champ vide qui renvoyait un résultat pour toutes les clés méta.

0
Austin Biggs

Vous voudrez utiliser l'argument 'meta_query' de WP_Query ( http://codex.wordpress.org/Class_Reference/WP_Query )

Voici un extrait qui utilise deux comparaisons de clé méta distinctes:

$query_args = array(
    'post_type' => 'event',
    'order' => 'ASC',
    'orderby' => 'meta_value_num',
    'meta_key' => '_start_date',
    'meta_query' => array (
                                    array(
                                        'key' => '_start_date',
                                        'value' => $_start_of_month,
                                        'compare' => '>',
                                    ),
                                    array(
                                        'key' => '_start_date',
                                        'value' => $_end_of_month, 
                                        'compare' => '<',
                                    ),
    ),

);

Important: Notez que meta_query utilise un tableau de tableaux.

2
MadtownLems