Notre collectif a récemment travaillé sur la refonte du site de l’Association de Volleyball d’Ecosse (Scottish Volleyball Association), et l’une des plus grosses difficultés a été de migrer les 550 galeries photos de l’ancien site vers le nouveau site développé avec WordPress.

Nous avons essayé différentes solutions avant de nous rabattre vers la version Pro de NextGen Gallery qui répondait le mieux à nos attentes.

NextGen permet d’attribuer une page WordPress par galerie afin d’en récupérer la propriété “Titre” notamment mais vu le nombre de galeries à créer il aurait été très long et fastidieux de procéder ainsi.

Nous avons donc décidé d’utiliser les albums comme “conteneur” de nos différentes galeries, ce qui nous a permis d’avoir uniquement 12 pages à créer et un affichage par année très propre avec le code suivant personnalisé dans chaque page. (cf. https://www.scottishvolleyball.org/galleries/)

[ngg src="albums" ids="xx" display="basic_extended_album" order_direction="ASC" template="basic-album"]

Il restait maintenant à trouver comment pouvoir récupérer l’information de titre de la galerie dans chacune des pages dynamiquement créées par NextGen.

Après investigation du code nous nous sommes rendu compte qu’il y avait un template dédié à l’affichage d’un fil d’ariane dans le contenu de la page, inutile à notre niveau vu que nous utilisions Yoast SEO (voir plus bas) et avons donc décidé de le surcharger pour en extraire le titre de la galerie. Nous avons donc dupliqué le fichier breadcrumbs.php dans le dossier wp-content/ngg/modules/photocrati-nextgen_basic_album/templates/et réécrit le code de la façon suivante.

<?php
$end = end($breadcrumbs);
?>
<?php if(array_key_exists('name', $end)): ?>
<h2><?php echo $end['name']; ?></h2>
<?php endif; ?>

Le deuxième problème que nous avons rencontré était de pouvoir ajouter le fil d’ariane correspondant à Yoast SEO dynamiquement.

Cette fois nous sommes passés par l’ajout d’un filtre dans notre thème enfant qui vérifie l’existence du paramètre nggallery dans l’URL (slug par défaut dans NextGen) pour récupérer l’album correspondant et venir alimenter le tableau de “liens” récupérés par Yoast.

add_filter('wpseo_breadcrumb_links', 'yoast_seo_breadcrumb_append_link');
function yoast_seo_breadcrumb_append_link($links)
{
    $request_parts = explode('/', $_SERVER['REQUEST_URI']);
    if (in_array('nggallery', $request_parts)) {
        $gallery_slug = end($request_parts);
        global $wpdb;
        $gallery = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}ngg_gallery WHERE `slug` = '$gallery_slug'", ARRAY_A);
        if ($gallery) {
            $links[] = array(
                'text' => $gallery[0]['title'],
            );
        }
    }

    return $links;
}

Notre dernière petite astuce concerne la gestion des balises HTML autorisées dans les descriptions de galerie. Par défaut NextGen n’autorise pas l’affichage des images par exemple et nous en avions besoin pour ajouter le logo des photographes. Nous avons donc surchargé le fichier descriptions.php dans wp-content/ngg/modules/photocrati-nextgen_basic_album/templates/ de la même façon que nous l’avions déjà fait pour le breadcrumbs.php. Et nous avons ajouté les balises HTML supplémentaires dont nous avions besoin de la façon suivante.

<?php print wp_kses($description, array_merge_recursive(M_I18N::get_kses_allowed_html(), array('div'=> array('style' => array()), 'img' => array('style' => array(), 'src' => array(), 'alt' => array())))); ?>

En espérant que cela puisse vous aider dans vos développements.

N’hésitez pas à nous contacter si vous avez besoin d’aide sur la mise en place d’une galerie NextGen ou d’un projet WordPress.