Покажите Heirachy категорий в Мониторе Загрузки WP

У меня есть установленный Плагин Монитора Загрузки, и он работает красиво, у меня просто есть вопрос относительно категорий.

У меня есть родительская категория, Выпуск 0, который будет иметь где угодно от 3-6 sub категорий в ней. Вместо раздела по размещенному на первой полосе сходству с ниже, где это просто перечисляет каждую загрузку в родительской категории независимо от sub категорий,

categories

Как мог я заставлять его напомнить структуру ниже, которая на самом деле использует категории, где нажатие на 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');
?>
1
22.11.2012, 11:42
2 ответа

Из документации и ее примера кода, я не вижу опции получить дерево категорий загрузок.

Функция 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 производят:

plugin settings final result

2
19.02.2020, 22:48
  • 1
    Привет Brasofilo, спасибо за всесторонний ответ! Вы думаете, что существует способ включить этот код в плагины [download_page] shortcode функция? Я добавил код к вопросу. (Я буду upvote, когда я достигну 15rep), –  dodgerogers 22.11.2012, 11:40
  • 2
    Лично, я следовал бы за пользовательским shortcode решением. Обновленный демонстрационный код для печати дерева категории и файлов от каждого. Теперь, это - Ваша очередь играть с кодом и отправить другой ответ при предложении другого решения :) –  brasofilo 22.11.2012, 14:59
  • 3
    Да, я думаю, что Вы правы, спасибо за большие подсказки и код, обновит, если я придумаю что-нибудь. аплодисменты, Andy. –  dodgerogers 22.11.2012, 15:17

Существует очень хорошая документация относительно Монитора Загрузки WP, доступного в веб-сайте автора. Поскольку то, что Вы пытаетесь сделать Вас, должно создать пользовательский формат, следующий обеспеченным примерам.

После того как Вы создали и сохранили формат, можно указать формат для использования в shortcode или вызове php.

1
19.02.2020, 22:48

Теги

Похожие вопросы