Хобрук: Ваш путь к мастерству в программировании

очистить URL-адреса в wordpress с помощью плагина галереи nextgen

Я использую плагин галереи NextGEN. В настоящее время я получаю идентификатор категории от mysite.com/photography?cat=weddings.

В моем page.php я получаю категорию, указанную в URL-адресе, и заполняю страницу на основе категории.

$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-адресе. Я также предпочел бы не делать все эти операторы if для получения идентификатора. Я вообще не хочу, чтобы идентификатор был в 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 и извлечь изображения из этой галереи.

12.10.2013
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..