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(); ?>
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.
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.