Files
ogre-obfuscation/inc/filter.php
2025-07-22 15:53:23 -05:00

74 lines
2.1 KiB
PHP

<?php
/**
* @package ogre-obfuscation
* @author cleverogre
* @version 0.2.0
* @since 0.1.0
*/
namespace Ogre\Obfuscation;
use Ogre\Singleton;
use Ogre\Obfuscation;
defined('ABSPATH') || exit;
final class Filter {
use Singleton;
protected function __construct() {
add_action('wp', array($this, 'init'));
}
public function init() {
if (!email_enabled()) return;
add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
add_action('the_content', array($this, 'filter_content'), 100, 1);
add_filter('wp_nav_menu_items', array($this, 'filter_content'), 100, 1);
add_filter('dynamic_sidebar_params', array($this, 'sidebar_params'), 100, 1);
add_filter('widget_output', array($this, 'filter_content'), 100, 1);
}
public function enqueue_scripts() {
wp_enqueue_script('obfuscation', Obfuscation::get_url('assets/js/obfuscation.js'), array(), Obfuscation::get_version(), true);
}
public function filter_content($content) {
if (!find_emails($content)) return $content;
return filter($content);
}
public function sidebar_params($params) {
global $wp_registered_widgets;
$widget_id = $params[0]['widget_id'];
$wp_registered_widgets[$widget_id]['_callback'] = $wp_registered_widgets[$widget_id]['callback'];
$wp_registered_widgets[$widget_id]['callback'] = array($this, 'widget_callback');
return $params;
}
public function widget_callback() {
global $wp_registered_widgets;
$params = func_get_args();
$widget_id = $params[0]['widget_id'];
$callback = $wp_registered_widgets[$widget_id]['_callback'];
$wp_registered_widgets[$widget_id]['callback'] = $callback;
$widget_id_base = $wp_registered_widgets[$widget_id]['callback'][0]->id_base;
if (is_callable($callback)) {
ob_start();
call_user_func_array($callback, $params);
$widget_output = ob_get_clean();
echo apply_filters('widget_output', $widget_output, $widget_id_base, $widget_id);
}
}
}
Filter::instance();