web-dev-qa-db-fra.com

Permaliens personnalisés avec la galerie NextGEN

j'ai mis mon lien Wordpress permlink à /%category%/%postname% maintenant j'utilise Nextgen Gallery, donc quand j'ai une galerie dans une page, ce sera quelque chose comme /cat/page?gallery=10 je veux le faire quelque chose comme cat/page/gallery id/ j'ai essayé beaucoup avec wp_rewrite ... mais pas de chance .. . de l'aide ?

c'est ce que je teste .. ce n'est pas mon code, il est fourni par wordpress ... je vais tout mettre à sa place quand j'ai trouvé le chemin ... alors ne vous inquiétez pas, je ne vais pas flushRules sur init ... Merci beaucoup

add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');

// Remember to flush_rules() when adding rules
function flushRules(){
 global $wp_rewrite;
    $wp_rewrite->flush_rules();
}

// Adding a new rule
function wp_insertMyRewriteRules($rules)
{
 $newrules = array();

    //i don't know what should i put here
 $newrules[''] = '';
 return $newrules + $rules;
 //
}

// Adding the id var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars)
{
    array_Push($vars, 'id');
    return $vars;
}
5
trrrrrrm

Avez-vous jeté un œil à l’API rewrite ? Peut-être que cela peut résoudre votre problème?
Si vous utilisez l'API de réécriture, vous devriez probablement activer la fonction de réécriture NextGen.

2
Steven

Avec un point d'extrémité supplémentaire

Puisque vous voulez ajouter quelque chose à la fin de chaque règle de réécriture de publication/page, vous pouvez probablement simplement ajouter un point final de réécriture. Ce sont des expressions rationnelles de la forme /[endpoint_name](/[optional_extra_stuff])? qui sont ajoutées aux règles déjà générées pour les pages, les articles, les archives, ...

Vous définissez les structures sur lesquelles vous souhaitez les ajouter en définissant le masque de noeud final. Comme il s'agit d'un masque de bits, vous pouvez combiner différents groupes à l'aide de l'opérateur |, comme suit: EP_PERMALINK | EP_PAGES correspond à chaque page et à chaque lien permanent (archives complètes post-date). La liste par défaut des noeuds finaux se trouve en haut de wp-includes/rewrite.php.

Le code suivant ajoutera /gallery(/(.*))? aux règles de réécriture existantes pour les pages, les publications et les archives basées sur la date (pour une raison quelconque, elles sont générées deux fois, une fois dans EP_PERMALINK et une fois dans EP_DATE):

add_filter( 'init', 'wpse4498_init' );
function wpse4498_init()
{
    add_rewrite_endpoint( 'gallery', EP_PERMALINK | EP_PAGES );
}

Avec de nouvelles règles de réécriture explicites

Vous pouvez également le faire explicitement, ce qui pourrait vous donner plus de contrôle sur les règles générées.

La règle de réécriture elle-même est assez simple: prenez la règle de publication générique (.+?)/([^/]+) (category/pagename) et ajoutez votre structure de galerie. NextGEN ajoute toujours ses variables de requête, pas seulement lorsque les permaliens sont activés, nous pouvons donc simplement utiliser la variable gallery var:

'(.+?)/([^/]+)/gallery/([0-9]{1,})/?$' =>
    'index.php?category_name=$matches[1]&name=$matches[2]&gallery=$matches[3]'

Le placement de votre règle de réécriture supplémentaire est délicat. Puisque votre structure de lien permanent est /%category%/%postname%/, vous avez des règles de réécriture prolixes et vous ne pouvez pas mettre un (.+?)/([^/]+) générique en haut: vos pages ne fonctionneront plus. Vous ne pouvez pas le mettre en bas, car les règles de pièce jointe sont assez génériques et auront correspondu à l'URL avant qu'il atteigne votre règle. Je pense que le meilleur endroit pour l'ajouter est avec le filtre post_rewrite_rules. Cela donnera ce qui suit:

add_filter( 'post_rewrite_rules', 'wpse4498_post_rewrite_rules' );
function wpse4498_post_rewrite_rules( $post_rewrite_rules )
{
    $post_rewrite_rules = array(
        '(.+?)/([^/]+)/gallery/([0-9]{1,})/?$' =>
            'index.php?category_name=$matches[1]&name=$matches[2]&gallery=$matches[3]',
    ) + $post_rewrite_rules;
    return $post_rewrite_rules;
}

Cela ne concerne que les publications. Si vous souhaitez également prendre en charge des pages avec des galeries, cela deviendra beaucoup plus compliqué, car vous devez les ajouter pour chaque groupe de pages détaillé.

1
Jan Fabry

Avez-vous activé les liens permanents dans les paramètres de NextGen? Sous Galerie -> Options -> Général, sélectionnez "activer les permaliens", puis réinitialisez vos paramètres généraux de permalien une fois. Ce n’est pas l’URL la plus propre au monde (elle saisit l’ID de la page au lieu du nom), mais elle fait le travail.

0
Norcross