web-dev-qa-db-fra.com

Comment ajouter une règle de redirection à Wordpress?

Pour le moment, je peux générer dynamiquement js et css en fonction des options de thème.

Pour ce faire, je mets en place une requête var qui, si présente, redirige vers un fichier php, qui se charge ensuite sous forme de fichier javascript. Après quoi, il prend jqpostID, et saisit toutes les options dont j'ai besoin pour générer mon js.

En gros, je dois inclure un lien de script faisant référence à une partie de mon code HTML liée à l'emplacement http://mywordpress.com/?dynamic=js&jqpostid=130

Je voudrais le rendre plus lisible et moins évident qu'il soit généré dynamiquement. peut-être comme ça ...

http://mywordpress.com/dynamic/js/123

je suppose que cela serait encore mieux ... http://mywordpress.com/dynamic/js/123.js

Je suppose que je dois en quelque sorte être connecté au moteur de réécriture de wordpress. Et ajoutez une nouvelle règle. Toute aide ou référence à d’autres articles serait utile, ou un exemple de code serait génial.

4
Wok

l'ajout de ces fonctions devrait faire l'affaire.

Tout d’abord, ajoutez cette ligne à functions.php pendant que vous travaillez sur ceci:

add_action('init', 'flush_rewrite_rules');

Ce code va effacer constamment les règles de réécriture, cela facilite les tests lorsque vous y travaillez, au lieu d’avoir à entrer et à les réinitialiser manuellement après chaque petit changement apporté aux règles de réécriture. VÉRIFIEZ que vous enlevez ceci lorsque vous avez terminé et que tout fonctionne correctement.

Ensuite, cette fonction créera les règles de réécriture souhaitées.

function custom_add_rewrite_rules( $wp_rewrite ) {
    $new_rules = array( 
        'dynamic/js/(\d+).js' => 'index.php?dynamic=js&jqpostid=' . $wp_rewrite->preg_index(1),
        'dynamic/css/(\d+).css' => 'index.php?dynamic=css&csspostid=' . $wp_rewrite->preg_index(1)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'custom_add_rewrite_rules');

J’ai essayé de comprendre à quoi pourrait ressembler la règle CSS, vous devrez peut-être l’ajuster en fonction de vos besoins. Je pensais simplement qu’elle serait formatée de la même manière que celle décrite pour le javascript. Cela peut provoquer un comportement étrange lorsqu'il tente de réécrire l'URL dans une extension de fichier, et cela peut ne pas fonctionner du tout. Dans ce cas, supprimez simplement les fichiers .js et .css de la fin de la première partie des entrées du tableau associatif.

function custom_add_rewrite_rules( $wp_rewrite ) {
    $new_rules = array( 
        'dynamic/js/(\d+)' => 'index.php?dynamic=js&jqpostid=' . $wp_rewrite->preg_index(1),
        'dynamic/css/(\d+)' => 'index.php?dynamic=css&csspostid=' . $wp_rewrite->preg_index(1)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'custom_add_rewrite_rules');

En gros, tout cela consiste à configurer l'URL à rechercher et la chaîne qu'il exécute à sa place. La première partie de l'entrée du tableau contient une expression régulière qui ne recherche que des nombres, la partie entre parenthèses. (cela peut être ajusté pour rechercher un nombre spécifique de chiffres, si nécessaire) La correspondance est passée dans la deuxième partie de l'entrée du tableau comme étant ce qui sera retourné dans la chaîne.

J'espère que cela vous aide, n'hésitez pas à me contacter si vous avez des problèmes.

6
Drew Gourley