Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Ajouter un règle de rewriting à partir du base MySQL


Sujet :

WordPress PHP

  1. #1
    Membre du Club
    Ajouter un règle de rewriting à partir du base MySQL
    Bonjour à vous,

    sur mon site wordpress, j'ai créé un plugin afin de générer des pages à partir d'un modèle développé en php, en intégrant des données de ma base MySQL.
    Mes urls sont donc du type http://www.monsite.com/page/?id=604 et j'aimerais que l'url soit renommée avec un nom qui est dans un autre champs de la table.

    J'avoue avoir un peu cherché et je ne sais pas si je dois faire ça dans le htaccess ou en créant de nouvelles règles dans le functions.php de mon thème.

    Et après, j'avoue aussi ne pas savoir exactement comment faire.

    Est-ce que quelqu'un pourrait m'aider en tant que débutant en php ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    est ce que vous voulez des URL qui contiennent l'identifiant, par exemple http://www.monsite.com/article-le-butinage-chez-les-poissons-abeilles-604 ?
    ou alors plutot sans identifiant comme cela : http://www.monsite.com/article-le-butinage-chez-les-poissons-abeilles ?

  3. #3
    Membre du Club
    Merci de votre réponse.
    A priori, une URL sans identifiant serait mieux. mais c'est pas encore trop gênant si ça reste. ça sera toujours mieux qu'avec le GET tout simple

  4. #4
    Expert éminent sénior
    dans ce cas vous pouvez essayer cette réécriture :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	add_rewrite_rule(
    		  "article-([^-]*)-([0-9]*)$"
    		, "index.php?page_id=\$matches[2]"
    		, "top"
    	);

    vous devez aussi vide le cache de réécriture comme expliqué dans la documentation :
    https://codex.wordpress.org/Function...d_rewrite_rule

  5. #5
    Membre du Club
    Merci de votre réponse.
    Du coup, j'imagine de que je dois écrire cette nouvelle règle dans mon htaccess. Mais j'avoue ne pas tout comprendre.
    Dans votre code, quelle est la variable qui devrait correspondre au champs "nom" lié de ma table SQL ?

  6. #6
    Expert éminent sénior
    Citation Envoyé par Clement_archeo Voir le message
    Du coup, j'imagine de que je dois écrire cette nouvelle règle dans mon htaccess.
    ce code doit être utilisé dans une extension, regardez le lien que j'ai indiqué

    Citation Envoyé par Clement_archeo Voir le message
    Dans votre code, quelle est la variable qui devrait correspondre au champs "nom" lié de ma table SQL ?
    il n'y a pas besoin de faire le lien avec le nom, wordpress va retrouvé le bon élément avec l'identifiant indiqué dans l'URL.

  7. #7
    Membre du Club
    Bonsoir Mathieu,
    je réponds à ton message en regardant l'attaque des clone...comme un petit clonage d'avatar...
    J'ai essayé donc d'insérer ton exemple en l'adaptant...mais ça ne fonctionne pas pour l'instant (même en vidant le cache de réécriture à partir de l'interface outils/permaliens).
    En réalité, dans mon extension, j'ai une notice qui est créé dynamiquement à partir du code suivant (que j'ai un peu abrégé) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    function shortcode_notice_Exemple(){
     
    //début de code pour gérer l'emplacement du code 
    	 ob_start();
        // do some stuff
    	$ID=htmlspecialchars($_GET["id"]);
    	include 'bdd_config.php';
    	$connexion=include 'connexion_db.php';
    	$hsc = function($p) { return htmlspecialchars($p, ENT_QUOTES, 'utf-8'); }; // échappement des caractères dangereux
     
    	//Requête pour choper les données liées à l'ID
    		$relation= $connexion->prepare ("SELECT * FROM table1 
    		WHERE table1.ID='$ID'");
    		$relation->execute();
     
       while($data=$relation->fetch(PDO::FETCH_ASSOC)){
     
     
    //extrait de la mise en forme de la notice
    echo "<html>
    <meta charset='utf-8'/>
    <div class='container'>
    <div class='row'>
    <div class='col'>
    <h2 style='text-align:center ; font-weight:bold ; font-family: times new roman,times,serif; font-size: 18pt;'>".$data ['Nom']."</h2></br>
    </div></div></div>";
      }
    //fin de code pour gérer l'emplacement
    	$code_output = ob_get_contents();
        ob_end_clean();
     
        return $code_output;
    	//fin de code de fonction
    }
    add_shortcode('Notice_Exemple', 'shortcode_notice_Exemple');

    Ce shortcode est alors inséré sur une page wordpress qui est appelée à demande.
    Je ne sais pas si je suis très compréhensible, mais en tout cas je ne vois pas trop où je devrais insérer cette rewrite rule.
    Désolé, je suis un peu débutant autodidacte...

  8. #8
    Membre du Club
    est-ce que mon problème fait peur ?

###raw>template_hook.ano_emploi###