El filtro add_filter no funciona como se espera en WordPress
Tengo un plugin de WordPress donde incluí este código (con algunos cambios):
$fep_files = array(
'first' => 'first.php',
'second' => 'second.php'
);
$fep_files = apply_filters('include_files', $fep_files );
foreach ( $fep_files as $fep_file )
require_once ( $fep_file );
unset ( $fep_files );
Ahora agregué en el functions.php de mi tema:
function fep_remove ( $fep_files )
{
if ( isset ( $fep_files['first'] ) ) {
unset ( $fep_files['first'] );
}
//die($fep_files); //para verificar si se ejecuta
return $fep_files;
}
add_filter( 'include_files', 'fep_remove' );
Debería eliminar first.php pero no lo hace. ¿Estoy cometiendo algún error? ¿Hay alguna mejor manera de incluir archivos donde el usuario pueda incluir/excluir archivos según sea necesario?

Creo que es necesario actualizar algunas de las respuestas aquí. (Solo para cuando yo u otras personas lleguemos a esta página en el futuro buscando una respuesta).
El orden de los plugins parece depender del tipo de instalación de WordPress con la que estés trabajando. Si estás trabajando con una instalación Multisite, entonces los plugins efectivamente se procesan en el orden en que se activan.
Sin embargo, en una instalación simple de WordPress, se activan alfabéticamente. Por lo tanto, si te encuentras con un problema donde necesitas actualizar un filtro de inicialización o una acción para otro plugin, tu mejor opción es nombrar tu plugin con algo que comience con un guión bajo.
Por ejemplo: _mi_plugin_personalizado/mi_plugin_personalizado.php
Como referencia, por favor revisa las líneas 704-713 en wp-admin/includes/plugin.php

El código de tu plugin se ejecutará antes que el código del tema y, por lo tanto, se ejecutará antes de que se agregue cualquier cosa al hook. Necesitarás mover el código que procesa la inclusión del archivo a algún otro hook que se ejecute después de que todos los plugins se carguen, como after_setup_theme
.
Esto podría ayudarte: ¿Existe un diagrama de flujo para la secuencia de carga de WordPress?

La respuesta anterior era excelente en cuanto al orden, pero no pude entender cómo hacer que el filtro/hook funcione con esas instrucciones.
Mi solución fue crear un plugin personalizado que contenga el filtro, asegurándome de que alfabéticamente venga antes que el plugin que contiene el filtro al que quiero agregar.
En otras palabras, colocar el código en plugins/a-custom-plugin.php
comenzando el archivo con:
<?php
/*
Plugin Name: Mi Plugin Personalizado
*/
