У меня есть установленный Плагин Монитора Загрузки, и он работает красиво, у меня просто есть вопрос относительно категорий.
У меня есть родительская категория, Выпуск 0, который будет иметь где угодно от 3-6 sub категорий в ней. Вместо раздела по размещенному на первой полосе сходству с ниже, где это просто перечисляет каждую загрузку в родительской категории независимо от sub категорий,
Как мог я заставлять его напомнить структуру ниже, которая на самом деле использует категории, где нажатие на sub категорию берет Вас ко всем ее загрузкам:
Выпуск 0 (7)>>
(Эти потребности остаться как ссылки, как вышеупомянутый)
Ниже код для download_page shortcode, есть ли способ включить sub категории в эту функцию?
function wp_dlmp_shortcode_download_page( $atts ) {
extract(shortcode_atts(array(
'base_heading_level' => '3',
'pop_count' => '4',
'pop_cat_count' => '4',
'show_uncategorized' => '1',
'per_page' => '20',
'format' => '',
'exclude' => '',
'exclude_cat' => '',
'show_tags' => '0',
'default_order' => 'title',
'front_order' => 'hits'
), $atts));
$output = wp_dlmp_output($base_heading_level, $pop_count, $pop_cat_count, $show_uncategorized, $per_page, $format, $exclude, $exclude_cat, $show_tags, $default_order, $front_order);
return $output;
}
add_shortcode('download_page', 'wp_dlmp_shortcode_download_page');
?>
Из документации и ее примера кода, я не вижу опции получить дерево категорий загрузок.
Функция get_downloads
возвращает одномерный массив. Возможно, стандартная программа могла быть создана для преобразования его в многомерный массив.
Используйте это для наблюдения его содержания:
$dl = get_downloads();
echo '<pre>' . print_r($dl, true ) . '</pre>';
Другая возможность дана глобальной переменной плагина, который содержит все категории:
global $download_taxonomies;
echo '<!-- <pre>' . print_r( $download_taxonomies->categories, true ) . '</pre> -->';
И результаты:
Array
(
[1] => download_category Object
(
[id] => 1
[name] => util
[parent] => 0
[decendents] =>
[direct_decendents] =>
[size] => 51
)
[2] => download_category Object
(
[id] => 2
[name] => sys
[parent] => 0
[decendents] => Array
(
[0] => 5
[1] => 7
[2] => 8
)
[direct_decendents] => Array
(
[0] => 5
[1] => 7
)
[size] => 3
)
[5] => download_category Object
(
[id] => 5
[name] => mac
[parent] => 2
[decendents] => Array
(
[0] => 8
)
[direct_decendents] => Array
(
[0] => 8
)
[size] => 4
)
[7] => download_category Object
(
[id] => 7
[name] => windows
[parent] => 2
[decendents] =>
[direct_decendents] =>
[size] => 0
)
[8] => download_category Object
(
[id] => 8
[name] => ipad
[parent] => 5
[decendents] =>
[direct_decendents] =>
[size] => 0
)
)
Используя этот массив, логика может быть создана, чтобы выполнить итерации через элементы и отобразить иерархию категорий.
Демонстрация с shortcode. Отметьте это digforcats
должно быть нулевое значение:
add_shortcode('download_cats', 'wpse_73425_download_categories');
function wpse_73425_download_categories( $atts )
{
global $download_taxonomies;
foreach( $atts as $key=>$value )
$query .= '&' . $key . '=' . $value;
$the_cats = '<br><br>Download Categories:';
foreach( $download_taxonomies->categories as $category )
{
if( $category->parent == 0 )
{
$the_cats .= '<br><b>' . $category->name . '</b><br>';
$dl = get_downloads('category='.$category->id.$query.'&digforcats=');
foreach($dl as $d)
{
$the_cats .= '<br><a href="'
.$d->url . '" title="Version '
.$d->version . ' downloaded '
.$d->hits.' times" >'
.$d->title.' ('.$d->hits.')</a>';
}
if( isset( $category->direct_decendents ) )
{
foreach( $category->direct_decendents as $cat )
{
$the_cats .= '<br>- - <i>'
. $download_taxonomies->categories[$cat]->name
. '</i><br>';
$dl = get_downloads('category='.$cat.$query.'&digforcats=');
foreach($dl as $d)
{
$the_cats .= '<br><a href="'
.$d->url.'" title="Version '
.$d->version . ' downloaded '
.$d->hits.' times" >'
.$d->title.' ('.$d->hits.')</a>';
}
}
}
}
}
return $the_cats;
}
Снимки экрана сменной страницы и shortcode производят:
Существует очень хорошая документация относительно Монитора Загрузки WP, доступного в веб-сайте автора. Поскольку то, что Вы пытаетесь сделать Вас, должно создать пользовательский формат, следующий обеспеченным примерам.
После того как Вы создали и сохранили формат, можно указать формат для использования в shortcode или вызове php.