Skip to content

Instantly share code, notes, and snippets.

@robertuniqid
Created October 21, 2019 12:38
Show Gist options
  • Save robertuniqid/f29374411be72046984f1f57d87b46ab to your computer and use it in GitHub Desktop.
Save robertuniqid/f29374411be72046984f1f57d87b46ab to your computer and use it in GitHub Desktop.
FilterHacks Trait
<?php
require_once( "trait.php" );
class Example {
use FilterHacks;
public function foo() {
$this->_filter_hack_deque( 'bar' );
// Do stuff.
$this->_filter_hack_reque( 'bar' );
}
}
<?php
trait FilterHacks {
protected $_filter_hacks_storage = [];
public function _filter_hack_deque( $filter_name ) {
if( is_array( $filter_name ) ) {
foreach( $filter_name as $current_filter_name )
$this->_filter_hack_deque( $current_filter_name );
return;
}
global $wp_filter;
if( !isset( $wp_filter[ $filter_name ] ) || !isset( $wp_filter[ $filter_name ]->callbacks ) || empty( $wp_filter[ $filter_name ]->callbacks ) )
return;
$this->_filter_hacks_storage[ $filter_name ] = $wp_filter[ $filter_name ]->callbacks;
remove_all_filters( $filter_name );
}
public function _filter_hack_reque( $filter_name ) {
if( is_array( $filter_name ) ) {
foreach( $filter_name as $current_filter_name )
$this->_filter_hack_reque( $current_filter_name );
return;
}
if( !isset( $this->_filter_hacks_storage[ $filter_name ] ) )
return;
foreach( $this->_filter_hacks_storage[ $filter_name ] as $filter_priority => $filter_data )
foreach( $filter_data as $current_filter_data )
add_filter( $filter_name, $current_filter_data[ 'function' ], $filter_priority, isset( $current_filter_data[ 'accepted_args' ] ) ? $current_filter_data[ 'accepted_args' ] : 1 );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment