Я использую атрибут в продуктах woocommerce
с именем CODE
. Я хочу искать в интерфейсе, включая этот атрибут. Вот мой код в functions.php
:
function tr_code_search_helper($wp)
{
global $wpdb;
// Check to see if query is requested
if (! isset($wp->query['s']) || ! isset($wp->query['post_type']) || $wp->query['post_type'] != 'product')
return;
$code = $wp->query['s'];
$ids = $wpdb->get_col($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_product_attributes' AND meta_value LIKE '%%%s%%';", $code));
//print_r($wpdb->postmeta);
if (! $ids)
return;
unset($wp->query['s']);
unset($wp->query_vars['s']);
$wp->query['post__in'] = array();
foreach ($ids as $id) {
$post = get_post($id);
if ($post->post_type == 'product_variation') {
$wp->query['post__in'][] = $post->post_parent;
$wp->query_vars['post__in'][] = $post->post_parent;
} else {
$wp->query_vars['post__in'][] = $post->ID;
}
}
}
add_filter('pre_get_posts', 'tr_code_search_helper', 15);
. Это работает, если атрибут CODE
содержит символы, но не работает, если он содержит только цифры. Как я могу это исправить?