Comment ajouter une règle de redirection à Wordpress?

4

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

Pour cela, je crée une requête var qui, si elle est présente, redirige vers un fichier php, qui se charge ensuite sous la forme d'un fichier javascript. Après quoi, il prend jqpostID, et saisit toutes les options dont j'ai besoin pour générer mon js.

Je dois en principe inclure un lien de script qui fait référence à une partie de mon html enlace

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

enlace

Je suppose que cela serait encore mieux ... enlace

Je pense que je dois me connecter au moteur de réécriture de wordpress en quelque sorte. 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.

    
posée Wok 07.04.2011 - 21:21

1 réponse

6

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

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

add_action('init', 'flush_rewrite_rules');

Ce code va effacer en permanence les règles de réécriture, il sera plus facile à tester pendant que vous travaillerez dessus, au lieu d’avoir à entrer et à les réinitialiser manuellement après chaque petit changement apporté aux règles de réécriture. ASSUREZ-VOUS de le supprimer 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 ce que vous avez décrit pour le javascript. Cela peut entraîner un comportement étrange lorsqu'il tente de réécrire l'URL dans une extension de fichier, ce qui risque de 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 à exécuter à la 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 rencontrez des problèmes.

    
réponse donnée Drew Gourley 07.04.2011 - 22:56

Lire d'autres questions sur les étiquettes