web-dev-qa-db-ja.com

一度に複数のメタキーを検索する

次のSQLクエリを変更して、一度に複数のメタキーを検索できるようにするにはどうすればよいですか。例えばuser_business AND user_about

結局、40から50種類のメタキーを探します。または、それらすべてを検索するオプションがある場合は、それがさらに良いでしょう。

<?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

実際に私がこの問題を解決する方法はキー名を提供することの代わりに、私はすべてのメタキーのために働いて戻ってきたフィールドを空白のままにしました。

0
Austin Biggs

あなたはWP_Queryの(meta_query)引数を使いたいでしょう( http://codex.wordpress.org/Class_Reference/WP_Query

これは、2つの別々のメタキーの比較を使ったスニペットです。

$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' => '<',
                                    ),
    ),

);

重要:meta_queryは配列の配列を取ります。

2
MadtownLems