Поиск WordPress Волшебные поля предметов? Нет Результатов Поиска - PullRequest
0 голосов
/ 14 марта 2012

Я создал сайт WordPress, который использует магические поля почти исключительно (вместо сообщений по умолчанию и т. Д.).

Однако я сейчас пытаюсь реализовать функцию поиска и обнаружил, что wordpress не может найти контент, созданный Magic Fields.

Я изменил свой поиск, чтобы создать собственный WP_Query, но мне все еще не повезло. Например, у меня есть post_type для 'project':

    $searchValue = $_GET['s'];

    $args = array(
        'post_type' => 'project',
        'posts_per_page' => -1,
        'meta_value' => $searchValue,
        'meta_key' => 'title'
    );

    $query = new WP_Query($args);

Это не возвращает никаких результатов. Куда я иду не так?

Большое спасибо заранее!

1 Ответ

3 голосов
/ 14 марта 2012

У меня тоже были проблемы с магическим полем и поиском по WordPress.Стандартный поиск по WordPress ищет только содержимое почтового ящика.Способ поиска по содержимому магического поля заключается в поиске по методу.

$add_value = true;
$query_array = array();
$query_for_posts = "page_id=";
$search_guery = $_GET['s'];
$search_results = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."postmeta WHERE meta_value LIKE '%" . $search_guery ."%' ORDER BY post_id");

if(!empty($search_results))
{
    foreach ($search_results as $search_result) 
    {
        //loop through results
        for($i=0;$i<sizeof($query_array);$i++)
        {
            //check if post id in the array
            if($search_result->post_id == $query_array[$i])
                $add_value = false;
        }
        if($add_value)
        {
            //add the post id to the array if not a duplicate
            array_push($query_array, $search_result->post_id);
            //also add id for WP_Query
            $query_for_posts .= $search_result->post_id . ",";
        }
        $add_value = true;
    }
}

, а затем для отображения результатов.

if(!empty($query_array))
{
    for($i=0;$i<sizeof($query_array);$i++)
    {
        //get post from array of ids
        $post = get_page($query_array[$i]);
        //make sure the post is published
        if($post->post_status == 'publish')
            echo '<h3><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></h3>';
    }
}
else
{
    //tell the user there are no results
}

Вы также можете использовать переменную $ query_for_posts в WP_query,Он должен иметь значение page_id = 1,3,7,9,23 ... все идентификаторы постов из результатов поиска.

...