web-dev-qa-db-fra.com

Image jointe URL réécrire

J'ai un problème avec la réécriture d'URL pour un thème que je fais, qui est essentiellement un thème de galerie basé sur le thème de racines. Voici comment fonctionne la navigation sur le site:

  • Page d'accueil (avec la galerie d'images en mosaïque) (les images sont liées aux pages parentes) URL actuelle - domain.com
  • Page parente (avec galerie d'images en mosaïque) (Les images sont liées à la page de pièce jointe avec #id pour créer un lien vers l'image cliquée). URL actuelle - domain.com/landscapes
  • Pièce jointe (avec TOUTES les images en taille réelle jointes à la publication parent). URL actuelle - domain.com/landscapes/image-title/#id

Ce que je voudrais faire est de supprimer le titre de l'image de l'URL de la page de pièce jointe et de le remplacer par la galerie afin que l'URL se lise domain.com/landscapes/gallery/#id

Mon content-image.php utilise wp_get_attachment_image_src() pour obtenir les URL de l'image. Avec de jolis permaliens désactivés, j'obtiens une URL d'image comme domain.com/index.php?attachment_id=205

Lorsque vous vérifiez avec une jolie URL avec le plugin Rewrite Rules Inspector, cette URL (domain.com/landscapes/image-title/#id) obtient 2 correspondances qui sont les suivantes:

RÈGLE 1: (.?.+?)(/[0-9]+)?/?$

Réécrire 1: index.php?pagename=$matches[1]&page=$matches[2]

RÈGLE 2: [^/]+/([^/]+)/?$

Réécrire 2: index.php?attachment=$matches[1]

D'après ce que j'ai compris, la deuxième règle est celle qui est appliquée dans ce cas, mais je n'ai aucune idée de quoi la changer. Une idée sur comment faire cela?

1
darthrax

Ok donc j'ai trouvé la réponse. J'ai utilisé le code selon https://wordpress.stackexchange.com/a/56426/37472 et j'ai remplacé toutes les références de 'series' par 'gallery'.

Cela a ajouté la règle de réécriture requise pour analyser un lien tel que domain.com/landscapes/gallery/123/ à index.php?attachment_id=123.

Mon hypothèse était que WordPress afficherait le lien permanent par défaut généré par get_permalink() au format domain.com/landscapes/gallery/123/. Ce ne est pas. Cependant, j'ai utilisé une solution de contournement simple dans mon script de galerie pour générer les liens d'ancrage dans le format requis, qui est différent pour la page d'accueil, les sous-pages et les pages parent/autres. Le script utilise isotope et lazy charge pour charger les galeries http://pastie.org/8294032 .

Pour le format différent des pages, j’ai modifié la fonction my_rewrite_rules_array( $rules ) comme suit:

function my_rewrite_rules_array( $rules ) {
    $my_rules = array();
    $my_rules['gallery/(\d+)/?$'] = 'index.php?attachment_id=$matches[1]';
    $my_rules['(\w+)/gallery/(\d+)/?$'] = 'index.php?attachment_id=$matches[2]';
    $my_rules['(\w+)/(\w+)/gallery/(\d+)/?$'] = 'index.php?attachment_id=$matches[3]';
    return $my_rules + $rules;
}
1
darthrax