search_posts_frontend

Обработка собственных URL для отображения (поиска) списков записей блогов во фронтенде. Параметры поиска должны содержаться в URL и представлять собой значения, воспринимаемые PHP-скриптами как массив. Массив должен быть указан в параметре с именем search и должен содержать единственный корневой элемент, совпадающий с ID плагина, например: ?search[myplugin][key]=myposts&search[myplugin][status]=1.

Доступно начиная с версии 1.0.0.

Блог

Входящие параметры (передаются по ссылке)

$params array Массив параметров поиска.
$params[plugin][%plugin_id%] array Массив параметров, переданных в качестве параметров URL.
… код плагина …

Результат работы плагина

%plugin_id%][join
Массив условий JOIN для SQL-запроса выборки записей блога в следующем формате:
array(
    'wa_contact' => array(    //ключ элемента массива — имя таблицы
        'type' => '', //например, 'LEFT'
        'condition' => array(    //части условия ON
            'wa_contact.id = blog_post.contact_id',
            '...',
        ),
        'fields' => array(    //список полей присоединенной таблицы и их псевдонимов, которые должен вернуть SQL-запрос
            'name' => 'contact_name',
            'company',    //если псевдоним поля не указан, в его качестве используется сам имя поля
            '...',
        ),
        'values' => array(    //альтернативный способ указан список полей, возвращаемых из присоединенной таблицы
            'name' => 'contact_name',    //в этом случае указывать псевдонимы нужно обязательно
            '...',
        ),
    ),
),
%plugin_id%][where
Простой массив условий WHERE для SQL-запроса выборки записей блога:
array(
    'contact_id = 123',
    'LENGTH(TITLE)  > 100',
    '...',
)
%plugin_id%][order
Условия ORDER BY для SQL-запроса выборки записей блога.
Блог

Пример кода плагина

PHP

public function searchPostsBackend($params)
{
    waLog::log(print_r($params, true), 'blog/myplugin/search-posts-frontend.log');

    //E.g., display posts added by current user at URL ?search[myplugin]=myposts
    if (isset($params['plugin'][$this->id])) {
        $result = array();
        if ($params['plugin'][$this->id] == 'myposts') {
            //adding custom WHERE condition
            $result['where'][] = 'contact_id = '.wa()->getUser()->getId();
            $response = wa()->getResponse();
            $response->setTitle(_wp('My posts'));
        } else {
            //select nothing if incorrect URL parameter value is passed instead of 'myposts'
            $result['where'][] = '0';
        }
        return $result;
    }
}