Intereting Posts
Что я должен сделать, чтобы сделать созданные аватары разными для анонимных комментариев? Список категорий с помощью Comma & Link пользовательский тип сообщения и таксономии в классе php Как запустить тему word press на localhost в ОС Ubuntu? Использует ли codex.wordpress.org какой-нибудь плагин? Если да, то какой плагин? Как справляться со многими атрибутами, не создавая так много вариаций? Показывать настраиваемое поле, если оно существует, и показывать разные элементы, если это не Массивные теги Удаление с помощью MySQL Как получить внешнюю страницу php для загрузки с помощью javascript Как получить дату для каждого сообщения? Галереи изображений, прикрепленных к сообщениям Отображение года один раз в категории.php Многоуровневый путь, как изменить основной сайт Хаос в скрипте WordPress Enqueue (jQuery & Foundation.js) Страница архивации для таксономии пользовательского типа сообщения

О крючках и фильтрах

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

Я был в кодексе и на разных сайтах NickTheGeek, BillErickson, Gary Jones и т. Д., Но не жил.

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

Благодаря тонну.

Увидев, что вы ссылались на 3 разработчиков Genesis, я хотел бы ответить на этот вопрос, используя 2 фрагмента кода Genesis, а также 2 примера WordPress для действий с крючками и фильтрами.

Крючки

Различные файлы шаблонов в Genesis включают в себя крючки, которые просто позволяют вам выполнять PHP-код в этой позиции шаблона.

Вот визуальный гид, который показывает все крючки, включенные в Книгу Бытия.

Если вы посмотрите в файле genesis> lib> framework.php, вы найдете все зависящие от темы действия, которые загружаются при загрузке цикла.

do_action( 'genesis_after_loop' ); 

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

Вот очень простой пример того, как использовать как WordPress, так и Genesis action hook в вашей дочерней теме, чтобы добавить контент в определенную позицию в вашей теме.

 add_action( 'genesis_after_loop', 'add_text_after_loop' ); function add_text_after_loop() { echo 'Hello World - Genesis After Loop Hook'; } 

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

 add_action( 'loop_end', 'add_text_after_loop_end' ); function add_text_after_loop_end() { echo 'Hello World - WordPress Loop End Hook'; } 

Чтобы проверить эти крючки, вы можете добавить оба фрагмента в файл функций ваших дочерних тем, чтобы увидеть, где именно отображается текст «Hello World». Затем вы можете поменять крючок на любой другой, используя руководство по визуальному крюку, чтобы определить местоположение, в котором вы хотите вывести текст.

введите описание изображения здесь

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

фильтры

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

Код для фильтра в Genesis выглядит так:

 $post_info = apply_filters( 'genesis_post_info', '[post_date] ' . __( 'by', 'genesis' ) . ' [post_author_posts_link] [post_comments] [post_edit]' ); 

Вышеприведенную строку кода можно найти в файле genesis> lib> structure> post.php.

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

 add_filter( 'genesis_post_info', 'sp_post_info_filter' ); function sp_post_info_filter($post_info) { $post_info = '[post_date] by [post_author_posts_link] [post_edit]'; return $post_info; } 

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

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

Этот фильтр применим только в Genesis и недоступен в WordPress.

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

 add_filter( 'excerpt_length', 'sp_excerpt_length' ); function sp_excerpt_length( $length ) { return 50; // pull first 50 words } 

Вышеприведенный код позволяет вам изменять длину отрывка сообщения в любой теме.

Источник http://my.studiopress.com/snippets/

Фильтр фильтрует контент. Действие выполняет действие.

Например, пост-контент передается через фильтр , например:

 echo apply_filters( 'the_content', $content ); 

Это означает, что, если какие-либо фильтры добавлены , то есть через add_filter( 'the_content', 'callback_name' ) , значение $content default по умолчанию изменяется и возвращается указанным обратным вызовом.

С другой стороны, действие – это просто место, где выполняется указанный код. Например, wp_head – это действие : местоположение в шаблоне, где выполняется код (например, wp_enqueue_script() и т. Д.).

Как обычно, Отто имеет отличную рецензию, которая идет более подробно .