私は単一のページ上のすべての異なるギャラリーにアクセスするためのナビゲーションを作成しようとしています。
すべての名前をハードコーディングする代わりに。これをダイナミックにして、すべてのギャラリーのすべてのIDを呼び出すことができれば、私は興味がありました。
誰もが新鮮なアイデアを得ましたか?
あなたのすべてのギャラリーはあなたのワードプレスデータベースのwp_ngg_gallery
と呼ばれるテーブルに保存されます。 (完全を期すために、nextGen Galleryはアルバムと写真用にそれぞれ2つのテーブルを作成します)
$gallery_ids = $wpdb->get_results(
"SELECT gid FROM ".$wpdb->prefix."ngg_gallery ORDER BY gid ASC", ARRAY_A);
すべてのギャラリーのIDを1から最後までのID順に配列にフェッチします。スライドショーである2つを除外します(例では、IDが4と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);
ギャラリーのタイトルが表示されていないIDは何が良いのでしょうか。また、タイトルで除外する方が簡単ではないでしょうか。したがって、この
$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);
ギャラリーのタイトルのアルファベット順に並べられた、スライドショー以外のすべてのギャラリーの配列が表示されます。 *
の代わりにワイルドカードgid, title
を選択すると、ギャラリテーブルからすべての列(gid、名前、スラッグ、パス、タイトル、galdesc、pageid、previewpic、author)を取得できます。
結果の配列は、それを繰り返し処理してリンクのリストを作成するなど、何もしない限り、明らかに無意味です。
結果の配列の構造は次のとおりです。
Array
(
[0] => Array
(
['gid'] => 4
['title'] => 'playing_football'
)
[1] => Array
(
['gid'] => 8
['title'] => 'vacation_pics'
)
)
あなたはアイデアを得ます。
編集:上記のデータベースクエリからナビゲーションを作成する
NextGenギャラリー>ギャラリーの管理ダイアログ内からすべてのギャラリーのページを既に作成していると仮定すると、以下から簡単なナビゲーションが作成されます。 pageidおよびtitle列は、データベースから選択されている必要があります。
echo '<ul>';
foreach ( $galleries as $gallery ) {
echo '<li><a href="' .
get_bloginfo( 'url' ) .
'/?p=' .
$gallery['pageid'] .
'">' .
$gallery['title'] .
'</a></li>';
}
echo '</ul>';
気になる場合は読んでください:
もっと簡単に言うと:
<?php
global $nggdb;
$galleries = $nggdb->find_all_galleries();
print_r($galleries);
?>
特定のページの特定のアルバムを使用してギャラリーのメニューを追加する必要がある場合は、私のコードを使用できます。
<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>