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.
$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;
}
}









