Risoluzione problema add_filter non funzionante in WordPress
Ho un plugin WordPress dove ho incluso questo codice (con alcune modifiche)
$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 );
Ora ho aggiunto nel functions.php del mio tema
function fep_remove ( $fep_files )
{
if ( isset ( $fep_files['first'] ) ) {
unset ( $fep_files['first'] );
}
//die($fep_files); //per verificare se viene eseguito
return $fep_files;
}
add_filter( 'include_files', 'fep_remove' );
Dovrebbe rimuovere first.php ma non lo fa. Ho sbagliato qualcosa, ma cosa? Esiste un modo migliore per includere file dove l'utente può includere/escludere qualsiasi file se necessario?

Penso che alcune risposte qui presenti debbano essere aggiornate. (Solo per quando io, o altri, visiteremo questa pagina in futuro alla ricerca di una risposta).
L'ordine dei plugin sembra dipendere dal tipo di installazione di Wordpress con cui si sta lavorando. Se si sta lavorando con un'installazione Multisite, i plugin vengono effettivamente processati nell'ordine in cui vengono attivati.
Tuttavia, in un'installazione singola di WordPress, vengono attivati in ordine alfabetico. Quindi, se si incontra un problema in cui è necessario aggiornare un filtro di inizializzazione o un'azione per un altro plugin, la soluzione migliore è nominare il proprio plugin con un nome che inizi con un underscore.
Ad esempio: _my_custom_plugin/my_custom_plugin.php
Per riferimento, si veda le righe 704-713 in wp-admin/includes/plugin.php

Il codice del tuo plugin verrà eseguito prima del codice del tema e quindi verrà eseguito prima che qualsiasi cosa venga aggiunta all'hook. Dovrai spostare il codice che gestisce l'inclusione del file su un altro hook che viene eseguito dopo il caricamento di tutti i plugin, come after_setup_theme
.
Questo potrebbe aiutarti: Esiste un diagramma di flusso per la sequenza di caricamento di WordPress?

La risposta precedente era ottima per quanto riguarda l'ordine, ma non sono riuscito a capire come far funzionare il filtro/hook con quelle istruzioni.
La mia soluzione è stata creare un plugin personalizzato contenente il filtro, assicurandomi che venga in ordine alfabetico prima del plugin che contiene il filtro che voglio modificare.
In altre parole, ho inserito il codice in plugings/a-custom-plugin.php
iniziando il file con
<?php
/*
Plugin Name: My Custom Plugin
*/
