search_posts_backend

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

Блог
Входящие параметры
передаются по ссылке
$params array Массив параметров поиска.
$params[plugin][%plugin_id%] array Массив параметров, переданных в качестве параметров URL.
… код плагина …
Результат работы плагина
$return['%plugin_id%][order']

Условия ORDER BY для SQL-запроса выборки записей блога.

$return['%plugin_id%][where']

Простой массив условий WHERE для SQL-запроса выборки записей блога:

array(
    'contact_id = 123',
    'LENGTH(TITLE)  > 100',
    '...',
)

$return['%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',    //в этом случае указывать псевдонимы нужно обязательно
            '...',
        ),
    ),
),

Блог

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

PHP

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

    //E.g., display posts added by current user at URL /webasyst/blog/?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;
    }
}