Plugin : Seo Http Error Manager 0.1
Il nous a semblé utile de vous proposer un Plugin qui vous permet de changer les codes d’erreur de vos pages. ( 404,301,302 )
Utilités :
Le Plugin Wordpress Seo Http Error Manager 0.1 est un plugin SEO (Search Engine Optimization) vous permettant de gérer les diverses pages d’erreurs sur votre blog, gestion complète et facile des erreurs 404 (Page n’existant plus), gestion des erreurs 301 (Documents déplacé de façon définitif) ainsi que des erreurs 302 (Documents déplacé de façon temporaire).
Version 0.2 Aout 2008:
Nouveau nom : SHEM ( Seo Http Error Manager )
Gestion des erreurs 404 ( déja dans la version 0.1 )
Gestion des erreurs 301 avec le choix de l’url destination ( déja dans la version 0.1 )
Gestion des erreurs 302 avec choix de l’url destination. ( déja dans la version 0.1 )
Utilisation possible hors de la boucle et ajout de fonction externe pour la gestion depuis une autre site.
Refonte complete compatible avec la branche 2.5.x
Version 0.1 Aout 2007:
Gestion des erreurs 404
Gestion des erreurs 301 avec le choix de l’url destination
Gestion des erreurs 302 avec choix de l’url destination.
Utilisation possible hors de la boucle .
Télécharger l’ancienne version ( Branche avant 1.5)
Installation
Téléchargez le fichier ( TELECHARGER le plugin ICI)
Décompressez le fichier (Télécharger un outil de décompression gratuit ).
Copiez le dans le répertoire FTP de votre blog dans la zone wp-content/plugins.
Rendez-vous dans la page de configuration des Plugins du menu d’admin.
Activez le Plugin wordpress Seo Http Error Manager 0.1 ( Comment activer un plugin wordpress ? )
Fonctionnement :
Lors d’une modification de page ou d’un article un nouveau champ apparaît vous permettant de bloquer l’accès de la page ou l’article en question, de le déplacer temporairement vers une autre adresse (URL) ou de le déplacer définitivement vers une autre adresse.
Vous serez donc libre de ne rien modifier ou de créer une redirection ou bloquer l’accès à la page par un code 404 .
Ceci n’empeche pas l’apparition de la page, le l’article dans les FLUX ;)
ScreenShot/Capture d’écran :

Cette cature est issue d’une anciene version de wordpress mais reste identique
Code source :
<?php
/*
Plugin Name: SHEM 2.0 Seo Http error manager 2 (WP 2.5.x)
Plugin URI: http://www.wordpress-seo.com/seo-http-error-manager.php
Description: Modifiez en un clic le code d'erreur Http de votre page ( 301,302,404 ) Aidez nous a faire connaître ce Plugin en ajoutant un lien vers wordpress-seo.com ( optionnel mais apprécié , merci )
Author: Songeur.com pour Wordpress-seo.com
Version: 0.2
Author URI: http://www.songeur.com
*/
/* ************** A LIRE *********************************
Remarques, Traduction, Suggestion, Bug : http://www.wordpress-seo.com/seo-http-error-manager.php
Modifiez en un clic le code d'erreur Http de votre page ( 301,302,404 )
Aidez nous a faire connaître ce Plugin en ajoutant un lien vers wordpress-seo.com
( optionnel mais apprécié , merci )
*********************************************************** */
class SeoHttpErrorManager
{
// ---------------------------------------------
// Constantes
// ---------------------------------------------
var $DefaultTagActivation = "code_errorcode_worpress_seo"; // ne pas editer
var $DefaultTagDestination = "url_errorcode_worpress_seo"; // ne pas editer
var $DefaultURL = "http://www.wordpress-seo.com/redirection-par-defaut.php"; // editable a vos risques et peril
var $DoNothing = 0; // aucune action
var $Do302 = 1; // 302
var $Do301 = 2; // 301
var $Do404 = 3; // 404
//--------------------------------------------------------//
// Redirection
//--------------------------------------------------------//
function TestRedirection()
{
global $wp_query;
if(isset($wp_query))
{
if(is_single())
{
if(isset($wp_query->post->ID))
{
$A=$this->LoadCustomKey($wp_query->post->ID);
// $DestinationUrl =$A['url'];
// $DoError =$A['code'];
// On redirige
switch(intval($A['code']))
{
case $this->Do404:
header("HTTP/1.1 404 Not Found");
die("<b>404 File not found!</b>");
exit();
break;
case $this->Do302:
header("HTTP/1.1 302 Found", false, 302);
header("Location: ".strval($A['url'])."");
exit();
break;
case $this->Do301:
header('HTTP/1.1 301 Moved Permanently', false, 301);
header('Location: '.strval($A['url']).'');
exit();
break;
case $this->DoNothing: default: break;
} // switch
} // on a bien un id
} // is single
} // qp_query ok
// pas de traitement possible ....
// return !
}
// ------------------------------------------------------------------
//
// ------------------------------------------------------------------
function Print_formulaire()
{
global $wp_query,$wpdb,$post;
if(isset($post))
{
if(isset($post->ID))
{
$A=$this->LoadCustomKey($post->ID);
?>
<br><hr><br>
<fieldset id="wpseoerrcode">
<legend>Plugin Seo, Wordpress-seo.com : Imposer un code d'erreur.<br>Nous vous remercions de ne pas cree d'erreur 302 vers http://www.wordpress-seo.com</legend>
<div>
Action :
<select name="wordpressseoerrorcode_err" id="wordpressseoerrorcode_err">
<option value="0"<? if($A['code']==$this->DoNothing){echo " selected";}?>>Ne rien faire</option>
<option value="1"<? if($A['code']==$this->Do301){echo " selected";}?>>301 ( redirection permanante )</option>
<option value="2"<? if($A['code']==$this->Do302){echo " selected";}?>>302 ( redirection temporaire )</option>
<option value="3"<? if($A['code']==$this->Do404){echo " selected";}?>>404 ( n'existe plus )</option>
</select>
<br>
URL (301 ou 302 ): <input type="text" name="wordpressseoerrorcode_url" value="<? echo strval($A['url']); ?>" size="50">
</div>
</fieldset>
<?
}// un ID ?
}// wpquery
}
// ---------------------------------------------
//
// ---------------------------------------------
function LoadCustomKey($PostId=0)
{
$Returned=array();
$Returned['url']=$this->DefaultURL;
$Returned['code']=$this->DoNothing;
if($PostId==0) {return $Returned;}
// --------------------------------------------------------------------
$mykey_err = get_post_custom_values($this->DefaultTagActivation,$PostId);
if(isset($mykey_err))
{
foreach ( $mykey_err as $key => $value )
{
// echo $key . " => " . $value . "<br />";
$Returned['code']=$value;
}
// Optimisation
if( $Returned['code']==$this->Do404 ||
$Returned['code']==$this->Do302 ||
$Returned['code']==$this->Do301 )
{
// On gere une erreur connue
$mykey_url = get_post_custom_values($this->DefaultTagDestination,$PostId);
foreach ( $mykey_url as $key => $value )
{
// echo $key . " => " . $value . "<br />";
$Returned['url']=$value;
}
} // error connu
}// si error
return $Returned;
}
// ---------------------------------------
function Save($PostId,$Error,$Url)
{
$this->Clear($PostId);
if(strlen($Url)==0) { $Url=$this->DefaultURL;}
add_post_meta($PostId, $this->DefaultTagDestination, $Url);
if( $Error==$this->Do404 || $Error==$this->Do302 || $Error==$this->Do301 ) {} // OK
else {$Error=$this->DoNothing;}
add_post_meta($PostId, $this->DefaultTagActivation, $Error);
}
// ---------------------------------------
function Clear($PostId)
{
delete_post_meta($PostId, $this->DefaultTagActivation);
delete_post_meta($PostId, $this->DefaultTagDestination);
}
// ---------------------------------------
function SaveFormulaire()
{
if(isset($_POST['wordpressseoerrorcode_err']))
{
$this->Save($_POST['ID'],$_POST['wordpressseoerrorcode_err'],$_POST['wordpressseoerrorcode_url']) ;
}
}
// ---------------------------------------
} // classe
// -----------------------------------------------------------
// appel au fonction Hors de wordpress possible !
// -----------------------------------------------------------
function SHEM_redirect() {global $SHEM;$SHEM->TestRedirection();}
function SHEM_print() {global $SHEM;$SHEM->Print_formulaire();}
function SHEM_saveform() {global $SHEM;$SHEM->SaveFormulaire();}
// ----------------------------------------------------------
function SHEM_add301($PostId,$Url) {global $SHEM;$SHEM->Save($PostId,$SHEM->Do301,$Url);}
function SHEM_add302($PostId,$Url) {global $SHEM;$SHEM->Save($PostId,$SHEM->Do302,$Url);}
function SHEM_add404($PostId) {global $SHEM;$SHEM->Save($PostId,$SHEM->Do404);}
function SHEM_clear($PostId) {global $SHEM;$SHEM->Clear($PostId);}
// ------------------------------------------------------------
// Action pour l'edition/sauvegarde
// ------------------------------------------------------------
// edition
add_action('edit_form_advanced', 'SHEM_print');
add_action('simple_edit_form', 'SHEM_print');
add_action('edit_page_form', 'SHEM_print');
add_action('publish_post', 'SHEM_saveform');
// affichage
add_action('template_redirect', 'SHEM_redirect');
// initialisation de l'outil ( permet une utilisation Hors de wordpress )
$SHEM=new SeoHttpErrorManager();
?>




