Ive написал запрос, который выполняет поиск всех сообщений, имеющих X в качестве значения мета/настраиваемого поля.PHP/MySQL query find string в поле
// PSV National Query
if ($_POST['vehicleType'] == 'psv' && $_POST['coverageRegion'] == 'national') {
$customkey = 'vehicleType';
$customvalue = $_POST['vehicleType'];
$customkey1 = 'coverageRegion';
$customvalue1 = $_POST['coverageRegion'];
$customkey2 = 'locationType';
$customvalue2 = $_POST['locationType'];
global $wpdb;
$my_posts = $wpdb->get_results("
SELECT $wpdb->posts.*
FROM $wpdb->posts, $wpdb->postmeta, $wpdb->postmeta AS mt1
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
AND $wpdb->postmeta.meta_key = '$customkey'
AND $wpdb->postmeta.meta_value = '$customvalue'
AND mt1.meta_key = '$customkey1'
AND mt1.meta_value = '$customvalue1'
AND mt2.meta_key = '$customkey2'
AND mt2.meta_value = '$customvalue2'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post'
ORDER BY $wpdb->posts.post_date DESC
");
$args = array(
'meta_query' => array(
array(
'key' => $customkey,
'value' => $customvalue,
'compare' => '='
),
array(
'key' => $customkey1,
'value' => $customvalue1,
'compare' => '='
),
array(
'key' => $customkey2,
'value' => $customvalue2,
'compare' => '='
)
)
);
$query = new WP_Query($args);
foreach ($query as $post) :
setup_postdata($post);
echo '<div><a href="';
the_permalink();
echo '"></div>';
the_title();
endforeach;
}
Теперь мой пост у меня есть 1 значение для каждого мета ключ, и это работает отлично, я хочу, однако, имеют несколько значений.
Например ...
"газ, электричество, вода"
Когда я добавляю несколько значений, однако запрос возвращает нуль, я presumer его потому, что им говорят, если ...
postmeta.meta_value = '$customvalue'
Может ли кто-нибудь дать мне совет о том, где я ошибаюсь?
Я попробовал этот @Wyck только он не кажется искать в моем поле для матча ... – Liam
Вы пробовали выход с помощью 'get_post_custom' http://codex.wordpress.org/Function_Reference/get_post_custom, включить отладку, http://debugggg.wordpress.com/ – Wyck