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