Intereting Posts
Использование fetch_feed для извлечения элементов с не общим заголовком Изменение результатов поиска Удалить возможность для других пользователей просматривать администратора в списке пользователей? Как написать этот короткий код? Сообщение удалено в корзине az список, категории и подкатегории в цикле Как вставить содержимое разных полей MySQL в сообщение? Самый эффективный способ разделения по типу сообщения в пользовательском запросе? Как использовать webhooks в wordpress? (Конкретный пример) Файлы перевода mo / po не работают Какие права следует предоставлять каталогам, если я хочу сделать WordPress более безопасным? Библиотеки JavaScript в WordPress Получите подсчет количества раз, когда термин или категория используется в сообщениях С W3 Total Cache, когда я публикую сообщение, он не отображается на главной странице. Только если я очищаю весь кеш WordPress установлен в подкаталоге

Как добавить_filter в OOP на основе apply_filter ('foo :: bar', $ a);

Я должен добавить больше элементов в массив $ actions, как я могу создать функцию add_filter для первого параметра следующим образом: apply_filter('foo::bar', $var);

Полный блок:

 public function get_bulk_actions() { $actions = array(); $actions['delete'] = __( 'Delete', ud_get_wp_property( 'domain' ) ); return apply_filters( 'wpp::all_properties::bulk_actions', $actions ); } 

Поэтому я хочу сделать что-то вроде этого, чтобы добавить еще один вариант действий:

 add_filter('wpp::all_properties::bulk_actions', 'add_something'); function add_something($actions) { $actions['dosomething'] = 'Do Something'; return $actions; } 

Solutions Collecting From Web of "Как добавить_filter в OOP на основе apply_filter ('foo :: bar', $ a);"

Я не совсем уверен, где у вас проблемы. Добавление и удаление крючков является основой программирования WordPress. Как только вы поймете систему крюков, вам будет намного легче.

Что такое крючки?

Все, что вам нужно для начала работы, доступно в Plugin API / Hooks . WordPress имеет два типа крючков: действия и фильтры, но они в основном одинаковы. Фильтры просто требуют, чтобы вы вернули возможную измененную переменную.

Что применяются apply_filters() и add_filter() ?

Предположим, что мы имеем функцию f() . Наша функция делает что-то полезное и возвращает значение. Но мы хотим, чтобы другие разработчики могли изменить это значение. Поэтому мы назовем apply_filters() для нашего значения. apply_filters() требует двух параметров: первый $tag – это строка, а второе $value может быть любым.

Другие разработчики или вы можете использовать add_filter() для изменения этого значения. add_filter() требует двух параметров и два параметра являются необязательными. Первый – это $tag . Это те же теги, которые использовались выше. Второй – callable : это может быть простой обратный вызов (строка), статический вызов класса, вызов класса объекта и другие. См. Ссылку, вызываемую PHP. Третий (необязательный) параметр – это приоритет, с которым должен стрелять крючок (сначала сбрасываются первые числа), а четвертый параметр – количество переменных, которые будут переданы функции.

Замечательно. Что-нибудь еще?

Ага. Обязательно добавьте фильтры перед apply_filters() . Если вы этого не сделаете, они не будут применены. Самый простой способ сделать это – узнать, когда apply_filters() hook и приоритет apply_filters() , а затем убедитесь, что вы add_filter() (или фильтры) до этого крючка.

Можете ли вы показать пример?

Ну вот.

 <?php /** * Plugin Name: WPSE 257530 * Description: WordPress StackExchange question 257530 * Plugin URI: https://wordpress.stackexchange.com/questions/257530/ * Author: Nathan Johnson * Licence: GPL2+ * Licence URI: https://www.gnu.org/licenses/gpl-2.0.en.html */ //* Don't access this file directly defined( 'ABSPATH' ) or die(); if( ! class_exists( 'wpse_257530' ) ): class wpse_257530 { protected $bulk_actions; public function plugins_loaded() { //* Add default actions at priority 0 add_filter( 'wpse-257530-bulk-actions', [ $this, 'default_bulk_actions' ], 0, 1 ); //* Add filter to a non-static method in the same class add_filter( 'wpse-257530-bulk-actions', [ $this, 'move' ], 10, 1 ); //* Do something on init add_action( 'init', [ $this, 'init' ] ); } public function init() { //* Get the bulk actions $this->bulk_actions = $this->get_bulk_actions(); //wp_die( var_dump( $this->bulk_actions ) ); } public function default_bulk_actions( $actions ) { return [ 'create' => __( 'Create', 'wpse-257530' ), 'rename' => __( 'Rename', 'wpse-257530' ), 'update' => __( 'Update', 'wpse-257530' ), 'delete' => __( 'Delete', 'wpse-257530' ), ]; } public function get_bulk_actions() { return apply_filters( 'wpse-257530-bulk-actions', [] ); } public function move( $actions ) { $actions[ 'move' ] = __( 'Move', 'wpse-257530' ); return $actions; } public static function slip( $actions ) { $actions[ 'slip' ] = __( 'Slip', 'wpse-257530' ); return $actions; } public function slide( $actions ) { $actions[ 'slide' ] = __( 'Slide', 'wpse-257530' ); return $actions; } } //* Start the plugin on plugins_loaded add_action( 'plugins_loaded', [ new wpse_257530(), 'plugins_loaded' ] ); //* Add filter to a non-static method in another class add_filter( 'wpse-257530-bulk-actions', [ new wpse_257530(), 'slide' ], 20, 1 ); //* Add filter to a static method add_filter( 'wpse-257530-bulk-actions', [ 'wpse_257530', 'slip' ], 10, 1 ); //* Add filter to a closure add_filter( 'wpse-257530-bulk-actions', function( $actions ) { $actions[ 'water' ] = __( 'Water', 'wpse-257530' ); return $actions; }, 10, 1 ); endif;