J'essaie de faire un nav pour accéder à toutes les différentes galeries sur une seule page.
Au lieu de coder en dur tous leurs noms. J'étais curieux de savoir s'il était possible de créer cette dynamique et d'appeler simplement toutes les cartes d'identité de toutes les galeries, avec peut-être une exclusion sur les deux qui sont des diaporamas.
Quelqu'un a de nouvelles idées?
Toutes vos galeries sont stockées dans une table appelée wp_ngg_gallery
dans votre base de données wordpress. (Par souci d'exhaustivité: la galerie nextGen crée 2 tables supplémentaires pour les albums et les images, respectivement)
$gallery_ids = $wpdb->get_results(
"SELECT gid FROM ".$wpdb->prefix."ngg_gallery ORDER BY gid ASC", ARRAY_A);
récupère les identifiants de toutes les galeries dans un tableau, classés par identifiant de 1 à la fin. Maintenant, pour exclure les deux diaporamas (l'exemple suppose que leurs identifiants sont 4 et 25):
$gallery_ids = $wpdb->get_results(
"SELECT gid
FROM ".$wpdb->prefix."ngg_gallery
WHERE gid NOT IN (4, 25)
ORDER BY gid ASC", ARRAY_A);
A quoi servent les identifiants sans les titres des galeries? En outre, ne serait-il pas plus facile d'exclure par titre? Donc ça
$galleries = $wpdb->get_results(
"SELECT gid, title
FROM ".$wpdb->prefix."ngg_gallery
WHERE title NOT IN (slideshow_1, slideshow_2)
ORDER BY title ASC", ARRAY_A);
vous donnerait un tableau de toutes les galeries sans diaporama triées alphabétiquement par titre. Vous pouvez également sélectionner avec un caractère générique *
au lieu de gid, title
, puis vous obtiendrez toutes les colonnes de la table gallery, qui sont gid, nom, slug, chemin, titre, galdesc, pageid, previewpic, auteur.
Le tableau résultant est évidemment dépourvu de sens, sauf si vous faites quelque chose avec lui, par exemple en le parcourant et en créant une liste de liens.
La structure du tableau résultant est la suivante:
Array
(
[0] => Array
(
['gid'] => 4
['title'] => 'playing_football'
)
[1] => Array
(
['gid'] => 8
['title'] => 'vacation_pics'
)
)
Vous avez eu l'idée.
EDIT: Créer une navigation à partir de la requête de base de données ci-dessus
En supposant que vous ayez déjà créé des pages pour toutes les galeries à partir de la boîte de dialogue Galerie NextGen> Gérer la galerie, les opérations suivantes créeront une navigation simple à partir de celle-ci. Les colonnes pageid _ et title doivent avoir été sélectionnées dans la base de données.
echo '<ul>';
foreach ( $galleries as $gallery ) {
echo '<li><a href="' .
get_bloginfo( 'url' ) .
'/?p=' .
$gallery['pageid'] .
'">' .
$gallery['title'] .
'</a></li>';
}
echo '</ul>';
En lisant, au cas où vous l'aimeriez
Ou plus simplement:
<?php
global $nggdb;
$galleries = $nggdb->find_all_galleries();
print_r($galleries);
?>
Si quelqu'un a besoin d'ajouter un menu de galeries utilisant un certain album sur une certaine page, mon code peut être utilisé.
<div id="gallery_menu">
<?php
// hardcoded part
if(is_page(12)){
$album_id = 2;
$page_id = 12;
}elseif(is_page(14)){
$album_id = 3;
$page_id = 14;
}elseif(is_page(16)){
$album_id = 4;
$page_id = 16;
}else{
$album_id = 2;
$page_id = 12;
}
// get the needed albums gallery id's
$query = "SELECT sortorder FROM wp_ngg_album WHERE id=".(int)$album_id;
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
if($row['sortorder']){
$tmp = unserialize($row['sortorder']);
}
}
// get gallery titles according to id's we got
$query_titles = "SELECT title, gid FROM wp_ngg_gallery WHERE gid IN(";
for($i=0; $i < count($tmp); $i++){
if($i != (count($tmp)-1)){
$query_titles .= (int)$tmp[$i].", ";
}elseif($i == (count($tmp)-1)){
$query_titles .= (int)$tmp[$i].")";
}
}
// query and show titles with links
$result_titles = mysql_query($query_titles) or die(mysql_error());
echo '<ul class="gallery_titles">';
while($row_titles = mysql_fetch_array($result_titles)){
echo '<li><a href="'.get_bloginfo('siteurl').'/?p='.$page_id.'&album='.$album_id.'&gallery='.$row_titles['gid'].'">'.$row_titles['title'].'</a></li>';
}
echo '</ul>';
?>
</div>