Как получить ID записи по значению метаполя

14 мар. 2017 г., 18:45:43
Просмотры: 14.8K
Голосов: 6

Пожалуйста, посмотрите на изображение ниже. Мне нужно получить post_id по значению meta_value = 93. Как это можно сделать?

Скриншот таблицы метаполей WordPress

4
Комментарии

Пожалуйста, посмотрите http://stackoverflow.com/questions/4116419/mysql-select-query-within-a-serialized-array

WebElaine WebElaine
14 мар. 2017 г. 18:49:44

Я сделал это, и теперь это работает: `global $wpdb; $sql = $wpdb->prepare("SELECT post_id FROM " . $wpdb->prefix . "postmeta WHERE meta_key = '_wbs_crosssells' && meta_value like '%%%s%%'",serialize($product_id)); $res = $wpdb->get_results( $sql, OBJECT );

return $res;`

huykon225 huykon225
14 мар. 2017 г. 18:55:04

Просто имейте в виду, что это не рекомендуемый метод, и запросы могут выполняться медленно, потенциально вызывая проблемы со стабильностью сайта. Тем не менее, рад, что вы нашли решение.

WebElaine WebElaine
14 мар. 2017 г. 18:56:02

Используйте meta API, он кешируется и оптимизирован $meta = get_post_meta(96, '_wbs_crosssells', true);

Ismail Ismail
14 мар. 2017 г. 23:24:23
Все ответы на вопрос 2
3

Попробуйте это. Это сработает.

$prepare_guery = $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta where meta_key ='_Wps_crossells' and meta_value like '%%d%'", $meta_value );
$get_values = $wpdb->get_col( $prepare_guery );

Дайте знать, работает или нет.

14 мар. 2017 г. 20:49:03
Комментарии

да. Теперь работает, как и в моём комментарии выше

huykon225 huykon225
15 мар. 2017 г. 03:13:58

ок. тогда всё в порядке.

Thilak Thilak
15 мар. 2017 г. 05:48:32

Вы имеете в виду FROM $wpdb->postmeta WHERE.

nmr nmr
27 мар. 2019 г. 10:49:30
1
global $wpdb;

$tbl = $wpdb->prefix.'postmeta';

$prepare_guery = $wpdb->prepare( "SELECT post_id FROM $tbl where meta_key ='_Wps_crossells' and meta_value like '%%d%'", $meta_value );

$get_values = $wpdb->get_col( $prepare_guery );

Примечание: Таблица должна быть $wpdb->prefix.'postmeta';

27 мар. 2019 г. 07:34:10
Комментарии

Это должен быть комментарий к другому ответу. Когда вы наберёте 50 очков репутации, вы сможете комментировать любые сообщения.

nmr nmr
27 мар. 2019 г. 10:53:01