一次搜索多个元键

时间:2013-07-02 作者:Austin Biggs

如何修改以下SQL查询以允许我一次搜索多个元键?e、 g.user\\u business和user\\u 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(); ?>

2 个回复
最合适的回答,由SO网友:Austin Biggs 整理而成

实际上,我解决这个问题的方法不是提供一个键名,而是将返回的字段留空,该字段对所有元键都有效。

SO网友:MadtownLems

您需要使用WP\\u query(http://codex.wordpress.org/Class_Reference/WP_Query )

下面是一个使用两个单独的元键比较的片段:

$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\\u查询采用一个数组。

结束