wake-up-neo.net

Durchsuchen Sie mehrere Metaschlüssel gleichzeitig

Wie ändere ich die folgende SQL-Abfrage, damit ich mehrere Metaschlüssel gleichzeitig durchsuchen kann? z.B. user_business AND user_about

Am Ende werde ich ungefähr 40 - 50 verschiedene Metaschlüssel suchen. oder wenn es eine Möglichkeit gibt, ALLE zu durchsuchen, wäre das sogar noch besser.

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

Eigentlich habe ich dieses Problem gelöst, indem ich keinen Schlüsselnamen angegeben habe, sondern das Feld leer gelassen, was für alle Metaschlüssel funktioniert hat.

0
Austin Biggs

Verwenden Sie das Argument 'meta_query' von WP_Query ( http://codex.wordpress.org/Class_Reference/WP_Query ).

Hier ist ein Ausschnitt, der zwei separate Metaschlüsselvergleiche verwendet:

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

);

Wichtig: Beachten Sie, dass meta_query ein Array von Arrays akzeptiert.

2
MadtownLems