Wie add_filter zu einem OOP basierten apply_filter (‘foo :: bar’, $ a);

Ich muss dem $ actions-Array weitere Elemente hinzufügen, wie könnte ich eine add_filter-function für einen ersten Parameter wie diesen apply_filter('foo::bar', $var); : apply_filter('foo::bar', $var);

Voller Block ist:

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

Also möchte ich so etwas machen um eine weitere Option zu Aktionen hinzuzufügen:

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

Solutions Collecting From Web of "Wie add_filter zu einem OOP basierten apply_filter (‘foo :: bar’, $ a);"

Ich weiß nicht genau, wo Sie Probleme haben. Das Hinzufügen und Entfernen von Hooks ist die Grundlage der WordPress-Programmierung. Wenn Sie das Hakensystem einmal verstanden haben, wird es Ihnen viel leichter fallen.

Was sind Haken?

Alles, was Sie für den Einstieg benötigen, finden Sie unter Plugin API / Hooks . WordPress hat zwei Arten von Hooks: Aktionen und Filter, aber sie sind im Grunde die gleichen. Filter erfordern nur, dass Sie eine mögliche modifizierte Variable zurückgeben.

Was sind apply_filters() und add_filter() ?

Angenommen, wir haben eine function f() . Unsere function tut etwas Nützliches und gibt einen Wert zurück. Aber wir möchten anderen Entwicklern ermöglichen, diesen Wert möglicherweise zu ändern. Also rufen wir apply_filters() auf unserem Wert auf. apply_filters() benötigt zwei Parameter: Das erste $tag ist ein String und der zweite $value kann alles sein.

Andere Entwickler oder Sie können dann die function add_filter() verwenden, um diesen Wert zu ändern. add_filter() benötigt zwei Parameter und zwei Parameter sind optional. Das erste ist das $tag . Dies ist das gleiche Tag, das oben verwendet wurde. Das zweite ist ein callable : Dies kann ein einfacher Callback (String), ein Aufruf einer statischen class, ein Objektklassenaufruf und andere sein. Siehe den aufrufbaren Link von PHP. Der dritte (optionale) Parameter ist die Priorität, die der Hook auslösen sollte (niedrigere Zahlen zuerst) und der vierte Parameter ist die Anzahl der Variablen, die an die function übergeben werden.

Das ist großartig. Noch etwas?

Jep. apply_filters() Sie sicher, dass Sie Ihre Filter vor dem Aufruf apply_filters() hinzufügen. Wenn Sie dies nicht tun, werden sie nicht angewendet. Der einfachste Weg dies zu tun, ist zu wissen, wann hook und priority apply_filters() aufgerufen wird und dann stellen Sie sicher, dass Sie add_filter() (oder Filter) vor diesem Hook haben.

Können Sie ein Beispiel zeigen?

Bitte schön.

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