apply_filters() — позволяет повесить фильтр на значение переменной. Wordpress фильтры


Search & Filter | WordPress.org

Search & Filter is a simple search and filtering plugin for WordPress — it is an advancement of the WordPress search box.

You can search by Category, Tag, Custom Taxonomy, Post Type, Post Date or any combination of these easily to really refine your searches — remove the search box and use it as a filtering system for your posts and pages. Fields can be displayed as dropdowns, checkboxes, radio buttons or multi selects.

Links: Search & Filter Documentation | Search & Filter Discussion

New: Search & Filter Pro
  1. Upload the entire search-filter folder to the /wp-content/plugins/ directory.
  2. Активируйте плагин на странице «Плагины» в панели управления WordPress.

You will find ‘Search & Filter’ menu in your WordPress admin panel.

For basic usage, you can also have a look at the plugin homepage or refer to the Search & Filter menu in your WordPress admin panel.

Installation Instructions
  1. Upload the entire search-filter folder to the /wp-content/plugins/ directory.
  2. Активируйте плагин на странице «Плагины» в панели управления WordPress.

You will find ‘Search & Filter’ menu in your WordPress admin panel.

For basic usage, you can also have a look at the plugin homepage or refer to the Search & Filter menu in your WordPress admin panel.

How can I xxxxx ?

The documentation has been updated to include examples almost all configurable options with screenshots — please refer to the Search & Filter Docs.

ru.wordpress.org

Фильтр записей или товаров в WordPress

Блог  /  jQuery  /  Добавление на сайт AJAX фильтра записей (типов постов) по рубрикам (таксономиям), произвольным полям либо по дате. Сортировка по убыванию / возрастанию.

В последнее время замечаю, что всё больше постов публикуются по просьбам читателей, так что пишите, возможно и для вас разберу какую-нибудь тему 🙂

Сейчас я покажу вам, как легко и просто создавать асинхронные фильтры записей/товаров (и те и вторые — это произвольные типы постов) на сайте при помощи всего лишь jQuery и WP_Query.

Для простоты не буду загружать пост ничем лишнем — рассмотрю только фильтрацию массива аргументов, постраничной навигации не будет, чтобы не усложнять пример. При необходимости могу дать подсказки по постраничной навигации в комментариях.

1. HTML форма фильтра

Форма будет состоять из выпадающего списка таксономий (для простоты — рубрик), диапазона значений произвольного поля (например пусть это будет цена), радио-кнопок сортировки по дате, по убыванию и возрастанию, а также чекбокса, который позволит отфильтровать посты, отобразив только те из них, у которых имеется миниатюра.

Таксономии

Неважно, элементы какой таксономии вы хотите вывести, в любых случаях функция get_terms() мне кажется ну самым удобным вариантом.

Для того, чтобы вывести элемент выпадающего списка с её помощью, вы можете воспользоваться следующим кодом:

if( $terms = get_terms( 'category', 'orderby=name' ) ) : // как я уже говорил, для простоты возьму рубрики category, но get_terms() позволяет работать с любой таксономией echo '<select name="categoryfilter"><option>Выберите категорию...</option>'; foreach ($terms as $term) : echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; // в качестве value я взял ID рубрики endforeach; echo '</select>'; endif;

Произвольные поля

Для примера возьмём минимальную и максимальную цену.

Ну тут всё легко, можно просто использовать два HTML-инпута. Конечно, будет гораздо интереснее элемент range с возможностью передвигания ползунков минимального и максимального значения. Но это уже на ваше усмотрение, плагинов jQuery много, что-нибудь да выберете.

<input type="text" name="cena_min" placeholder="Минимальная цена" /> <input type="text" name="cena_max" placeholder="Максимальная цена" />

Дата

Как я уже писал выше — это будут две radio-кнопки.

<label><input type="radio" name="date" value="ASC" /> Дата: по возрастанию</label> <label><input type="radio" name="date" value="DESC" selected="selected" /> Дата: по убыванию</label>

Чекбокс «Только с фото»

Ну тут вообще всё просто.

<label><input type="checkbox" name="featured_image" /> Только с миниатюрой</label>

Форма целиком

Так как данная статья относится к разделу для начинающих, то не поленюсь теперь подвести итог и скинуть весь код получившейся формы.

<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST"> <?php if( $terms = get_terms( 'category', 'orderby=name' ) ) : // как я уже говорил, для простоты возьму рубрики category, но get_terms() позволяет работать с любой таксономией echo '<select name="categoryfilter"><option>Выберите категорию...</option>' foreach ($terms as $term) : echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; // в качестве value я взял ID рубрики endforeach; echo '</select>'; endif; ?> <input type="text" name="cena_min" placeholder="Минимальная цена" /> <input type="text" name="cena_max" placeholder="Максимальная цена" /> <label><input type="radio" name="date" value="ASC" /> Дата: по возрастанию</label> <label><input type="radio" name="date" value="DESC" selected="selected" /> Дата: по убыванию</label> <label><input type="checkbox" name="featured_image" /> Только с миниатюрой</label> <button>Применить фильтр</button> <input type="hidden" name="action" value="myfilter"> </form> <div></div>

2. jQuery-скрипт для отправки запроса и получения данных

Тут я подразумеваю, что вы уже знаете, что такое jQuery и умеете его как минимум подключать на сайт.

jQuery(function($){ $('#filter').submit(function(){ var filter = $(this); $.ajax({ url:ajaxurl, // обработчик data:filter.serialize(), // данные type:filter.attr('method'), // тип запроса beforeSend:function(xhr){ filter.find('button').text('Загружаю...'); // изменяем текст кнопки }, success:function(data){ filter.find('button').text('Применить фильтр'); // возвращаеи текст кнопки $('#response').html(data); } }); return false; }); });

3. Обработчик PHP

Ну и последний шаг. Основная задача, с которой у многих людей возникают трудности — это задание аргументов для WP_Query с учётом всех параметров фильтра выше.

function true_filter_function(){ $args = array( 'orderby' => 'date', // сортировка по дате у нас будет в любом случае (но вы можете изменить/доработать это) 'order' => $_POST['date'] // ASC или DESC );   // для таксономий if( isset( $_POST['categoryfilter'] ) $args['tax_query'] = array( array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $_POST['categoryfilter'] ) );   // создаём массив $args['meta_query'] если указана хотя бы одна цена или отмечен чекбокс if( isset( $_POST['cena_min'] ) || isset( $_POST['cena_max'] ) || ( isset( $_POST['featured_image'] ) && $_POST['featured_image'] == 'on' ) ) $args['meta_query'] = array( 'relation'=>'AND' ); // AND значит все условия meta_query должны выполняться   // условие 1: цена больше $_POST['cena_min'] if( isset( $_POST['cena_min'] ) ) $args['meta_query'][] = array( 'key' => 'cena', 'value' => $_POST['cena_min'], 'type' => 'numeric', 'compare' => '>' );   // условие 2: цена меньше $_POST['cena_max'] if( isset( $_POST['cena_max'] ) ) $args['meta_query'][] = array( 'key' => 'cena', 'value' => $_POST['cena_max'], 'type' => 'numeric', 'compare' => '<' );   // условие 3: миниатюра имеется if( isset( $_POST['featured_image'] ) && $_POST['featured_image'] == 'on' ) $args['meta_query'][] = array( 'key' => '_thumbnail_id', 'compare' => 'EXISTS' );   die(); }     add_action('wp_ajax_myfilter', 'true_filter_function'); add_action('wp_ajax_nopriv_myfilter', 'true_filter_function');

Если особый интерес у вас вызывают последние две строчки, то тема AJAX в WordPress подробно раскрыта тут.

misha.blog

Самые используемые WordPress фильтры (filter) для плагинов. Топ-50

В первой части я разобрал топ-100 WordPress функций и рассказал о методике, по которой я собирал данные. Во второй части я рассмотрел более 50 самых используемых wordpress разработчиками (плагинов) actions.

В этой части входные данные всё те же, и я отобрал 50 самых используемых вордпресс фильтров (add_filter). И снова повторюсь - для познания мастерства плагиностроения под ВП вы должны знать эти фильтры - они позволяют вклиниться внутрь механизма WordPress.Не все динамические фильтры, возможно, попали в топ и по некоторым динамическим фильтрам может быть погрешность +-3 или 5. Это не отменяет тот факт и показатель значимости этих фильтров.

Часто используемые разработчиками плагинов WordPress фильтры:

FilterИспользований Codex Developers WP-Kama
the_content(103)
plugin_action_links_(plugin_file)(56)
cron_schedules(48)
body_class(40)
wp_mail_content_type(38)
plugin_row_meta(36)
query(31) -
plugin_action_links(28) -
admin_footer_text(27) -
option_(option_name)(27)
authenticate(25)
widget_text(24)
admin_body_class(24) -
wp_title(24) -
pre_option_(option)(23)
query_vars(22)
set-screen-option(22) -
post_row_actions(20) -
views_(screen_id)(20) -
mce_external_plugins(19)
post_updated_messages(19) -
plugins_api(19) -
pre_kses(18)
pre_update_option_(option)(17)
the_title(17)
mce_buttons(16)
the_excerpt(16) -
get_avatar(16)
map_meta_cap(15) -
all_plugins(15) -
template_include(15)
show_admin_bar(14)
tiny_mce_before_init(13)
comments_open(12) -
login_message(12)
gettext(12)
http_headers_useragent(12) -
manage_users_custom_column(12) -
request(11)
comments_template(10)
upload_mimes(10)
allowed_redirect_hosts(10)
bulk_actions-(screen_id)(10)
login_redirect(10)
wp_redirect(10) -
get_the_excerpt(10)
registration_errors(10)
comment_text(9) -
user_has_cap(9)
http_request_args(9) -

На этом трехсерийный материал по самым топовым функциям, хукам и фильтрам закрыт.

Надеюсь что вам был полезен этот рейтинг самых-самых и думаю, что вы теперь сможете еще легче ориентироваться в вопросах создания плагина для WordPress.

Высказывайтесь в комментариях если материал вам пригодился.

#WordPress #ОтНовичкаДоПрофессионала #ПутьВебмастера #ХочуНаучиться

592

Везёт тому - кто сам везёт!

otshelnik-fm.ru

add_filter() - функция WordPress

Прикрепляет фильтрующую функцию к одному из существующих фильтров в коде, созданному при помощи apply_filters().

add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 )
$tag (строка) Название фильтра. $function_to_add Название функции, которая будет фильтровать значение переменной. Однако данная переменная позволяет задать не просто название функции строкой функция1, то также и указать функцию внутри класса следующим образом array('Класс1', 'функция_внутри_класса1') или, если всё это действо происходит внутри класса, то array(&$this, 'функция_внутри_класса1'), кроме того, если ваша версия PHP > 5.3.0, вы можете использовать анонимную функцию, как например:
add_filter( 'misha_filter_1', function( $var1 ) { return '<em>' . $var1 . '</em>'; });

Но я не рекомендую использовать такой прикольный способ, потому что если вдруг вам придётся сменить версию PHP на более низкую, то вы заколебетесь изменять всё это в своём коде.

И кстати, add_filter() не проверяет, существует ли указанная вами возвратная функция вообще.

$priority (целое число) Приоритет выполнения, чем он меньше, тем раньше будет применена фильтрующая функция по отношению к другим фильтрующим функциям. $accepted_args (целое число) Общее количество переменных, которые будут переданы в фильтрующую функцию.

Возвращает true при успешном применении фильтрующей функции, иначе false

Примеры

Добавим произвольную строку в конце всех заголовков постов

Вряд ли это может вам понадобиться, но такой вот простой пример.

add_filter('the_title', 'misha_add_text_to_titles'); // если приоритет равен 10 и количество параметров - 1, то это значения по умолчанию и их в add_filter() можно не указывать   function misha_add_text_to_titles( $title ){ $title = $title . "какой-то текст"; return $title; }

Множество других примеров на truemisha.ru

Прежде всего я рекомендую вам почитать полное руководство по фильтрам в WordPress.

Также можете перейти на страницу метки functions.php на сайте и вашему вниманию предстанет огромное количество примеров, так или иначе связанных с применением фильтров или действий.

misha.blog

apply_filters() - функция WordPress

Блог  /  Кодекс WordPress  /  apply_filters() — позволяет повесить фильтр на значение переменной

Одна из функций, входящих в часть функционала хуков в WordPress.

Суть этой функции в том, что где-то в коде, который пользователю изменять не стоит (например потому что тогда не получится спокойно обновляться), висит эта функция, определяющая название фильтра и благодаря ей, уже при помощи add_filter(), на этот фильтр мы можем повесить дополнительные функции, которые приведут переменную $value к тому значению, которое нам и нужно.

Незаменима при создании хорошего плагина.

apply_filters( $tag, $value, $arg, $arg1 ... )
$tag (строка) Собственно это и есть название фильтра — на него мы и будем вешать произвольную функцию при помощи add_filter(). Название должно быть уникальным. $value (число|строка|массив|объект) Сама переменная, отфильтрованное значение которой функция должна будет возвратить. Результат действия функции apply_filters() не обязательно присваивать переменной с тем же самым названием. $arg Одна или несколько дополнительных переменных, которые будут переданы в нашу произвольную (возвратную) функцию.

Пример использования функции при фильтрации контента поста

Довольно простой пример и я его уже рассматривал когда-то. Вы возможно знаете, что содержимое поста можно вывести разными способами. И вполне возможно вы также знаете, что есть функция get_the_content(), возвращающая неотфильтрованный контент поста, и the_content(), которая как раз таки выводит отфильтрованный контент. Под отфильтрованным содержимом поста я имею ввиду, что к нему применены все шорткоды, произведены соответветствующие замены, например - на — и так далее.

Так вот, при помощи функции apply_filters() мы можем сами вручную отфильтровать контент из функции get_the_content().

$content_no_filter = get_the_content(); // содержимое поста неотфильтрованное $content_filter_applied = apply_filters( 'the_content', $content_no_filter ); // отфильтрованное

Пошаговый пример создания своего собственного фильтра

Всё начинается с переменной, на которую мы должны воздействовать извне. Переменная может быть обычным числовым значением, может быть объектом, а может быть HTML-кодом например какого-нибудь виджета.

У меня для простоты примера пусть это будет числовая переменная.

Теперь же допустим я хочу задать какой-нибудь дополнительный параметр, под воздействием которого переменная будет меняться. Опять-таки для простоты примера возьму простое строковое значение.

$arg1 = 'больше'; // эта переменная допустим также может принимать значение 'меньше'

Теперь объединяем эти два листинга и вешаем фильтр.

$number = 100; $arg1 = 'больше';   $number = apply_filters( 'misha_filter_name', $number, $arg1 );

А теперь сама фильтрующая функция, которую мы подвесим при помощи add_filter().

add_filter( 'misha_filter_name', 'misha_filter_function', 10, 2 ); // цифра 10 это приоритет приоритет выполнения функции (нужен, если фильтрующих функций несколько) // 2 это количество всех параметров функции, в данном случае $number и $arg1 // 10 и 1 - значения по умолчанию соответственно   function misha_filter_function( $number, $arg1 ) {   if( $arg1 == 'больше' ) $number = $number + 50;   if( $arg1 == 'меньше' ) $number = $number - 50;   return $number; }

Как результат, получаем изменённое значение переменной. Если у вас есть трудности или вопросы по работе apply_filters(), оставляйте комментарий, обязательно помогу вам разобраться.

misha.blog

действия и фильтры WordPress » Мистерия онлайна

Когда дело доходит до профессиональной разработки на WordPress, очень важно, чтобы разработчики понимали как действия, так и фильтры, являющиеся основополагающими WordPress – все это Хуки.

Хуки дают нам возможность изменять, расширять и улучшать WordPress через API в наших темах, плагинах и других элементах кастомизации.

В данной статье мы разберем жизненный цикл страницы WordPress, поймем, как работают хуки, и посмотрим на разницу между действиями и фильтрами. Это не только повысит наши навыки в создании тем или плагинов, но и даст нам более глубокое понимание того, как работает WordPress.

Обратите внимание: данная статья предназначена для начинающих, и если вы относите себя к таковым, то не стесняйтесь, и задавайте вопросы в комментариях. Если же вы опытный разработчик, то пост освежит ваши знания.

Жизненный цикл страницы WordPress

Перед тем, как перейти к хукам WordPress, важно понять, из чего состоит жизненный цикл WordPress

“Жизненный цикл страницы – это не что иное, как комбинация событий, начиная с того момента, когда браузер запрашивает страницу и заканчивая тем, когда сервер отдает ее браузеру”.

Скажем, к примеру, что вы загружаете одну страницу. При этом WordPress на самом высоком уровне выполняет следующее:

За вывод, стиль и позиционирование данных на мониторе отвечают файлы шаблона и запросы к API функциям.

Звучит очевидно, но теперь вы можете представить себе всю интенсивность процесса, когда вы просматриваете самые сложные блоги.

Конечно, сейчас мы говорим о самом простом уровне. В него не включена информация о механизмах кэширования или других продвинутых темах построения проектов на WordPress.

Популярный разработчик проектов на WordPress, Rarst (http://twitter.com/Rarst), создал график, который раскрывает основы загрузки ядра WordPress:

filtry wordpress

filtry wordpress

Не расстраивайтесь, если не можете понять эту диаграмму. Разместил ее я в качестве справочника. Думаю, что в конце этой сессии каждый разработчик сможет понять ее.

Вот ключ к пониманию основных моментов о хуках во время жизненного цикла загрузки страницы WordPress:

“В то время как WordPress проводит серию запросов и готовит данные к их возврату браузеру, он еще проверяет все пользовательские хуки, а это действия и фильтры, которые были записаны. Именно через фильтры проходят все собранные данные перед тем, как данные отдаются браузеру”.

Именно на данном этапе важно установить, что такое хуки, определить разницу между действиями и фильтрами, и установить, какую роль они играют в жизненном цикле страницы.

Все о хуках

Хуки в WordPress – это действия и фильтры. Если бы вы решили поискать определение на официальном сайте (http://codex.wordpress.org/Plugin_API/Hooks), то вы бы увидели короткую страницу со ссылками на действия и фильтры. Именно таким оно и должно быть.

Но вот что на самом деле вы должны думать об этом:

“Хуки в прямом смысле позволяют нам зацепляться за части жизненного цикла страницы WordPress для восстановления, вставки или изменения данных. Или же они позволяют нам предпринимать определенные действия перед отображением”.

Довольно неплохо, не так ли?

Усвоить нужно следующее:

1. Действия отличаются от фильтров.

2. Вы легко можете забросить хук (крюк) в любой момент работы. Существует определенное время запуска хука и оптимальное время его действия.

Действия

Итак, что же такое действия? Самое простое определение гласит, что действия указывают на то, что произошло. Вот и все. И как же нам не перепутать их с событиями?

Вот как это понимаю я:

“Действия – это события в жизненном цикле страниц WordPress, когда случаются определенные вещи: загружаются определенные ресурсы, становятся доступными определенные возможности, и, в зависимости от того, как рано произошло действие, должны загружаться некоторые элементы”.

Действия являются определенными точками в жизни страницы, когда вы можете навязать свой функционал.

Это означает, что у вас есть возможность заставить что-то происходить в то время, когда загружается страница.

В WordPress вообще важно хорошо знать именно те моменты, когда ты можешь вмешаться. Лично я очень часто встречаю разработчиков, которые чрезмерно используют действие init. Я не сомневаюсь, что делают они это вовремя, но неужели нельзя сообщить о том, что ты собираешься делать до того, как кто-то начнет получать пост? Лучше использовать pre_get_posts хук, нежели init.

Именно поэтому очень важно понимать действия.

Фильтруйте все!

Фильтры с другой стороны полностью отличаются от действий. Общее у них лишь то, что они случаются в определенные моменты жизненного цикла страницы, однако то, что они делают, отличается.

Вот что фильтры означают для меня:

“Фильтры – это функции, через которые WordPress пропускает данные во время определенных моментов жизненного цикла страницы. Они в первую очередь ответственны за перехват, управление и возврат данных браузеру, или за сохранение данных из браузера в базу данных”.

Представьте на секунду, что посетитель сайта собирается загрузить пост. Из жизненного цикла страницы мы понимаем, что WordPress будет делать запрос к базе данных по поводу этого поста и затем возвращать его браузеру. Перед тем как это сделать, движок пропустит все данные через фильтры, установленные вами.

На этом этапе фильтры вступят в действие. Например, вы хотите добавить короткое предложение об авторе в конце контента. Для этого вам нужно зарегистрировать пользовательскую функцию с фильтром the_content и добавить ваше предложение в контент.

В данной статье углубляться в это мы не будем, могу лишь сказать, что понимание и грамотное использование фильтров позволит вам легко и эффективно манипулировать самыми разными данными.

Но когда какой хук использовать?

Вот некоторые советы, которые я обычно даю:

Вот и все! Я надеюсь, что все довольно просто.

Вконтакте

Facebook

Twitter

Google+

Понравилась запись? Подпишитесь на обновления по почте:

Twitter

Facebook

Читайте похожие статьи

max1net.com

Плагин для WordPress: WP Posts Filter

Read this page in English.

Этот плагин предназначен для фильтрации записей по рубрикам и меткам. Плагин может фильтровать записи как для главной страницы, так и для какой-либо другой страницы вашего блога. Вы можете настроить фильтр для любой страницы, однако он будет работать только в случае, если на этой странице размещен код. Возможно отключение фильтра для конкретной страницы с сохранением всех настроек.

Скачать плагин можно отсюда. Ну а теперь — подробности.

Плагин фильтрует записи в трех режимах:

  1. По рубрикам;
  2. По меткам;
  3. По рубрикам и меткам.

Несколько особенностей работы фильтра:

Возможно указание количества записей на страницу отдельно для каждой страницы. По умолчанию используется значение “Записей на страницу” из настроек Wordpress (Настройки → Чтение).

Код для страницы

Для того, чтобы плагин фильтровал записи на определенной странице, на ней должен быть размещен специальный код. По умолчанию этот код выглядит так:

В таком формате плагин отфильтрует записи, используя свои настройки. В более развернутом формате возможно переопределение заданных настроек плагина:

[wppf heading_tag=”h3” heading_class=”entry-title” content_tag=”div” content_class=”entry-content” per_page=”10”]

Выше приведен пример развернутой записи кода [wppf] со всеми параметрами и их значениями по умолчанию. Указывать все параметры необязательно. Определение параметров:

Свои комментарии, отзывы, и т.п. можете оставить здесь. Также можете создать обсуждение здесь. Если вы нашли какие-либо баги, или у вас есть предложение о том, как улучшить плагин, вы можете использовать инструмент для отслживания ошибок здесь. Если вы хотите локализовать плагин на свой язык, вы можете взять файл wp-posts-filter.pot за основу для перевода. О том, как создать файл локализации, можно прочитать здесь. Если вы хотите, чтобы ваша локализация была включена в дистрибутив плагина, свяжитесь со мной.

oleg.blog


Смотрите также

Prostoy-Site | Все права защищены © 2018 | Карта сайта