J'ai écrit du code qui sécurise les fichiers de mes clients et l'a ajouté au fichier de fonction wordpresses. Cependant, chaque fois que des mises à jour arrivent, cela écrase évidemment ma fonction.
Je voulais donc le créer comme un plugin.
Cependant, je continue à avoir cette erreur:
PHP Warning: Cannot modify header information - headers already sent by...
Donc, je dois exécuter mon code, AVANT que wordpress envoie les en-têtes.
Comment je fais ça?
Merci richard
Mettre à jour. Ok, voici le code, j'ai changé les tags cependant, mais même principe ...
<?php
/*
* Plugin Name: My WP Plugin
* Plugin URI: http://www.example.com/plugins
* Description: My Plugin
* Version: 1.0
* Author: My Name
* Author URI: http://www.example.com/
*/
function somebit_init() {
$_permaStruc = get_option('permalink_structure');
if($_permaStruc != "") {
if($_GET['dl']) {
header("Location: http://google.com");
exit;
} else if($_GET['download']) {
header("Location: http://google.com");
exit;
}
}
}
add_action('init', 'somebit_init');
?>
J'obtiens toujours l'erreur "Avertissement PHP: Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par ...".
Tu vois pourquoi? Je ne le trouve pas. peut-être que j'ai fait quelque chose de mal que je ne peux pas voir.
Richard
Le hook approprié à utiliser est template_redirect
, ce qui vous permet de disposer des informations nécessaires pour effectuer des vérifications tout en étant suffisamment tôt pour effectuer une redirection. Selon l'exemple de la page du codex:
function my_page_template_redirect()
{
if( is_page( 'goodies' ) && ! is_user_logged_in() )
{
wp_redirect( home_url( '/signup/' ) );
exit();
}
}
add_action( 'template_redirect', 'my_page_template_redirect' );
Page Codex ici - template_redirect
utiliser add_action('init', 'your_function');
ou tout crochet d'action avant que les en-têtes ne soient envoyés: http://codex.wordpress.org/Plugin_API/Action_Reference
Que diriez-vous d'utiliser cette action? Codex Link - Action send_headers
add_action( 'send_headers', 'add_redirect_header' );
function add_redirect_header() {
header( 'Location: http://www.google.com' );
}
Vos contrôles, if($_GET['dl'])
et else if($_GET['download'])
génèrent des erreurs Undefined index:
, ce qui semble être à l'origine d'un problème d'en-tête avec votre plug-in My Security Plugin.
Essayez de le changer pour:
function somebit_init() {
$_permaStruc = get_option('permalink_structure');
if($_permaStruc != "") {
if( !empty($_GET['dl'])) {
header("Location: http://google.com");
exit;
} else if( !empty($_GET['download'])) {
header("Location: http://google.com");
exit;
}
}
}