web-dev-qa-db-fra.com

problème inattendu dans la réécriture d'URL

Selon la réponse fournie dans Comment créer des itinéraires d'URL personnalisés? J'ai créé la règle de réécriture à l'aide de la même fonction fournie.

add_action( 'init', 'wpse26388_rewrites_init' );
function wpse26388_rewrites_init(){
    add_rewrite_rule(
        'gallery/([0-9]+)/?$',
        'gallery?custom_gallery_id=$1',
        'top' );        
}

Après le vidage du fichier de règles, .htaccess avait la règle suivante:

RewriteRule ^gallery/([^/]+)/?$ /wordpress/gallery?custom_gallery_id=$1 [QSA,L]

jusqu'à ce point tout allait bien alors j'ai essayé de faire quelques modifications dans la règle comme

add_action( 'init', 'wpse26388_rewrites_init' );
    function wpse26388_rewrites_init(){
        add_rewrite_rule(
            'topic/([^/]+)/([^/]+)/gallery/([0-9]+)/?$',
            'gallery?custom_gallery_id=$3',
            'top' );        
    }

cela ne semble pas fonctionner du tout. quelqu'un peut-il m'aider pour cela? Merci d'avance.

1
Rohit Pande

tout d'abord, vous devez ajouter votre custom_gallery_id pour interroger vars si vous n'avez pas déjà:

add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = 'custom_gallery_id';
    return $query_vars;
}

pour votre règle de réécriture, vous devez charger un objet WordPress - une page, une catégorie, etc., ainsi que toutes les réécritures internes pointez sur index.php. si sujet, lieu et nouveau delhi sont toutes des pages, cela ressemblerait à ceci:

function wpse26388_rewrites_init(){
    add_rewrite_rule(
        'topic/([^/]+)/([^/]+)/gallery/([0-9]+)/?$',
        'index.php?pagename=topic/$matches[1]/$matches[2]&custom_gallery_id=$matches[3]',
        'top' );        
}

essayez également ce plugin pour analyser et tester vos règles de réécriture.

1
Milo