Commit inicial - WordPress Análisis de Precios Unitarios

- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-11-03 21:04:30 -06:00
commit a22573bf0b
24068 changed files with 4993111 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
<?php
/**
* Modules.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*/
namespace AdvancedAds;
use AdvancedAds\Interfaces\Module_Interface;
use AdvancedAds\Framework\Interfaces\Initializer_Interface;
defined( 'ABSPATH' ) || exit;
/**
* Modules.
*/
class Modules implements Initializer_Interface {
/**
* Modules.
*
* @var array
*/
private $modules = [];
/**
* Running modules.
*
* @var array
*/
private $running = [];
/**
* Runs this initializer.
*
* @return void
*/
public function initialize(): void {
add_action( 'init', [ $this, 'load_modules' ], 0 );
}
/**
* Register a module.
*
* @param string $module Module class name.
*
* @return void
*/
public function register_module( string $module ): void {
$module = new $module();
$name = $module->get_name();
$this->modules[ $name ] = $module;
}
/**
* Load modules.
*
* @return void
*/
public function load_modules(): void {
foreach ( $this->modules as $module ) {
if ( $this->can_load( $module ) ) {
$module->load();
}
}
}
/**
* Check if a module can be loaded.
*
* @param Module_Interface $module Module object.
*
* @return bool
*/
private function can_load( Module_Interface $module ): bool {
$check = apply_filters( 'advanced-ads-can-load-module', true, $module );
if ( ! $check ) {
return false;
}
if ( in_array( $module->get_name(), $this->running, true ) ) {
return false;
}
$this->running[] = $module->get_name();
return true;
}
}