2013-10-11 40 views
0

Im使用NextGEN Gallery插件。目前我得到的類別ID mysite.com/photography?cat=weddings使用nextgen gallery插件的wordpress中的乾淨網址

在我的page.php中,我得到的類別多數民衆贊成在網址,並根據該類別填充頁面。

$cat = $_GET['cat']; 
if($cat == 'portraits'){ $cat = 'where galleryid = 5'; } 
if($cat == 'weddings'){ $cat = 'where galleryid = 3'; } 
if($cat == 'outdoor'){ $cat = 'where galleryid = 4'; } 

$q = $wpdb->get_results(" 
    select filename, meta_data, galleryid, gal.name, pid 
    from wp_ngg_pictures as pic 
    join wp_ngg_gallery as gal on (gal.gid = pic.galleryid) 
    {$cat} 
"); 

我只想做這個/mysite.com/photography/weddings 並在URL中有查詢字符串。我也寧願不做所有這些如果陳述來獲取身份證。我不想讓ID在URL中,所以我想要一個可讀的URL。

WordPress是否有一個簡單的方法來做到這一點?

回答

1

添加到您的functions.php添加一個新的重寫規則:

function my_add_rewrites() { 
    global $wp_rewrite; 
    $wp_rewrite->add_rule('photography/([^/]+)/?', 'index.php?pagename=photography&photocat=$matches[1]', 'top'); 
} 
add_action('init', 'my_add_rewrites'); 

function my_query_vars($query_vars) { 
    $query_vars[] = 'photocat'; 
    return $query_vars; 
} 
add_filter('query_vars', 'my_query_vars'); 

然後在你的page.php,添加:

global $wp, $wpdb; 
// Get the query var 
$photocat = $wp->query_vars['photocat']; 
// Get the gallery ID 
$gid = $wpdb->get_var("SELECT gid FROM $wpdb->ngg_gallery WHERE slug = '$photocat';"); 
// Check if we have a valid value 
$q = FALSE; // Set a default so you can check later 
if($gid !== NULL) { 
    // Get the images -> could also use $nggdb->get_gallery($gid); 
    $q = $wpdb->get_results(" 
     select filename, meta_data, galleryid, gal.name, pid 
     from wp_ngg_pictures as pic 
     join wp_ngg_gallery as gal on (gal.gid = pic.galleryid) 
     {$gid} 
    "); 
} 

你也應該能夠通過從一個畫廊讓你的圖片$nggdb->get_gallery($gid)這可能更容易&更清潔。

一旦添加了所有(重寫)代碼,請轉至Settings -> Permalinks並重新保存您的固定鏈接設置以將新的重寫規則添加到數據庫。

mysite.com/photography/weddings現在應該設置$photocat變量爲weddings並從該圖庫中拉出圖像。