Je suis bien conscient de l'utilisation de thèmes pour enfants pour cela. Je connais get_header ($ name). Je comprends déjà l'utilisation des balises conditionnelles.
Je veux que mon plugin supprime la fonction:
function get_header( $name = null ) {
do_action( 'get_header', $name );
$templates = array();
if ( isset($name) )
templates[] = "header-{$name}.php";
$templates[] = 'header.php';
// Backward compat code will be removed in a future release
if ('' == locate_template($templates, true))
load_template( ABSPATH . WPINC . '/theme-compat/header.php');
}
et le remplacement de get_header () par:
function get_header( $name = null ) {
do_action( 'get_header', $name );
$templates = array();
if ( isset($name) )
templates[] = "header-{$name}.php";
$templates[] = 'header.php';
// Backward compat code will be removed in a future release
if ('' == locate_template($templates, true))
load_template( MY PLUGIN PATH/header.php');
}
php.net m'a dit d'utiliser runkit_function_remove (), mais le site Web sur lequel je suis en train de travailler indique qu'il s'agit d'une fonction non définie.
Toute aide serait très appréciée.
Leon
Je ne sais pas ce que vous voulez faire est faisable (cela me semble impossible mais tout semble impossible tant que personne ne l’a fait). J'ai pensé à une solution de contournement très laide.
add_filter( 'template_include', function( $template ) {
$temp = get_temp_dir() . basename( $template );
file_put_contents( $temp, str_replace( 'get_header(', 'get_header2(', file_get_contents( $template ) ) );
return $temp;
});
function get_header2( $name = null ) {
do_action( 'get_header', $name );
$templates = array();
if ( isset($name) )
$templates[] = "header-{$name}.php";
$templates[] = 'header.php';
// Backward compat code will be removed in a future release
if ('' == locate_template($templates, true))
load_template( MY PLUGIN PATH/header.php');
}
Ceci remplace get_header par get_header2 dans tous les modèles avant le chargement.