add_filter nu funcționează cum mă așteptam
Am un plugin WordPress unde am inclus acest cod (cu unele modificări)
$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 );
Acum am adăugat în functions.php al temei mele:
function fep_remove ( $fep_files )
{
if ( isset ( $fep_files['first'] ) ) {
unset ( $fep_files['first'] );
}
//die($fep_files); //pentru a verifica dacă se execută
return $fep_files;
}
add_filter( 'include_files', 'fep_remove' );
Ar trebui să elimine first.php dar nu o face. Unde greșesc? Există o metodă mai bună de a include fișiere unde utilizatorul poate include/exclude orice fișiere dacă este nevoie?

Cred că unele dintre răspunsurile de aici necesită o actualizare. (Doar pentru cazul în care eu sau alții vom ajunge pe această pagină în viitor în căutarea unui răspuns).
Ordinea plugin-urilor pare să depindă de tipul de instalare WordPress cu care lucrezi. Dacă lucrezi cu o instalare Multisite, atunci plugin-urile sunt într-adevăr procesate în ordinea în care sunt activate.
Cu toate acestea, într-o instalare WordPress simplă, acestea sunt activate alfabetic. Așadar, dacă întâmpini o problemă unde trebuie să actualizezi un filtru de inițializare sau o acțiune pentru un alt plugin, cea mai bună soluție este să denumești plugin-ul tău cu ceva care începe cu un underscore.
De exemplu: _my_custom_plugin/my_custom_plugin.php
Pentru referință, te rugăm să consulți liniile 704-713 din wp-admin/includes/plugin.php

Codul tău de plugin va rula înaintea codului temei și, prin urmare, va rula înainte ca orice să fie adăugat la hook. Va trebui să muti codul care procesează includerea fișierului pe un alt hook care rulează după ce toate plugin-urile sunt încărcate, cum ar fi after_setup_theme
.
Aceasta ar putea ajuta: Există o diagramă de flux pentru secvența de încărcare WordPress?

Răspunsul anterior a fost bun în ceea ce privește ordinea, dar nu am reușit să fac să funcționeze filtrul/hook-ul conform acelor instrucțiuni.
Soluția mea a fost crearea unui plugin personalizat care conține filtrul, asigurându-mă că acesta vine în ordine alfabetică înaintea plugin-ului care conține filtrul pe care vreau să îl adaug.
Cu alte cuvinte, am plasat codul în plugings/a-custom-plugin.php
începând fișierul cu:
<?php
/*
Plugin Name: My Custom Plugin
*/
