• Добрый день.
    На одном из сайтов создано большое древо категорий разного уровня вложенности.

    При создании меню в админ панели нужно сохранить иерархию категорий при их выборе в левом окне блока Рубрики.

    Постраничная навигация рубрик рушит все древо, это очень не удобно.

    Есть ли возможность убрать постраничную навигацию в блоке accordion-section на странице создания меню?

    Для наглядности структура меню:

    Название марки авто
    + Запчасти
    + Аксессуары
    Название марки авто 2
    + Запчасти
    + Аксессуары

    т.к. древо разрушено, нет возможности определить какая категория с одним и тем же названием имеет родителя марки авто.

    Спасибо

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Нашел функцию wp_nav_menu_item_taxonomy_meta_box в файле /wp-admin/includes/nav-menu.php строка 837

    $per_page = 50;

    отвечает за количество отображаемых элементов.

    Возможно ли подменить количество не вмешиваясь в этот файл?

    Постраничная навигация рубрик рушит все древо, это очень не удобно.

    Вы имеете ввиду в админке?
    Почему рушит? Там всё иерархически. А кол-во отображаемых постов настраивается вверху, в настройках экрана.

    А возможно Вам будет удобен какой-нибудь плагин, для удобного управления постами\страницами. Их существует много самых разных с разными возможностями.

    В админке на странице Внешний вид => Меню (/wp-admin/nav-menus.php)

    На этой странице в настройках экрана нет опции для изменения количества отображаемых категорий в списке слева.

    Думаю, что решения плагинами нет, т.к. в функции wp_nav_menu_item_taxonomy_meta_box переменная $per_page = 50; задана цифрой а не переменной.

    Вариантов 3:
    1. Заменить функцию wp_nav_menu_item_taxonomy_meta_box на свою (что не есть хорошо).
    2. Заменить в функции wp_nav_menu_item_taxonomy_meta_box значение переменной на требуемое. Например: 500 (слетит при обновлении WP)
    3. Надеяться, что опция изменения отображения количества рубрик на странице создания меню будет добавлена в следующих версиях.

    В админке на странице Внешний вид => Меню (/wp-admin/nav-menus.php)

    Ааа. я значит неправильно понял (я подумал речь об иерархии на wp-admin/edit.php)

    Вариантов 3:

    4: создать отдельное меню для каждой рубрики.
    5: использовать не меню (nav-menu), а список (wp_list_categories)
    6: использовать не родное меню (nav-menu), а какой-нить плагин для создания меню.

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

    Вариант 4
    4. Изучить код, найти удачный хук[1] и изменить значение на свое.

    И лесом обновления, полное переписывание функций и ожидание следующей версии 🙂


    [1] Предположу, что этот можно применить (1291 строка) http://core.trac.wordpress.org/browser/tags/3.7.1/src/wp-includes/taxonomy.php#L1254

    Спасибо, но это не решает проблемы описанной выше.

    Да, более правильным будет переопределить функцию. Но при каждом обновлении WP придется следить за тем, не изменилась ли функция. В случаи ее изменения менять свою функцию которой я заменил стандартную. А если сайтов 10-20. Менять везде функцию вручную? 🙂 нет спасибо.

    Проблема не в выводе меню или его построении. А в неудобстве добавлять рубрики в меню. т.к. постраничная навигация дробит иерархию.

    Спасибо, но это не решает проблемы описанной выше.

    В смысле не решает? Пробовали уже?

    В красном круге то как есть, в зеленом после изменения значения переменной $per_page
    http://habrastorage.org/storage3/71b/75a/664/71b75a6649a5a3d3ef2d40ef0f235346.jpg

    wikicms, не успел вам ответит 🙂
    get_terms — Получает все элементы (термины) указанной таксономии.
    Предложенная вами функция никак не может повлиять на результат работы функции которая выводит список категорий в разделе создания меню.

    Ну вот, я же говорил, что фильтр сработает.. Поздравляю!

    В красном круге то как есть, в зеленом после изменения значения переменной $per_page

    Так вот Вы о чём!
    Так как по мне скролить и выискивать гораздо сложнее, чем использовать поиск — он же сразу показывает нужное.

    Да и вообще — Вы меню каждый день исправляете, что это доставляет неудобства? Что-то мне подсказывает — не там Вы проблему нашли 🙂

    Предложенная вами функция никак не может повлиять на результат работы функции которая выводит список категорий в разделе создания меню.

    Ну раз вы так уверены, тогда я пас 😉

    SeVlad, Если бы сайтом пользовался я 🙂 Структура сайта построена таким образом, что для каждой марки автомобиля есть одинаково названные рубрики. Поиск не поможет.

    wikicms, возможно я чего то не знаю, не могли бы вы более подробно описать, как можно повлиять на переменную $per_page = 50; в массиве $args ?

    Код начала функции которая выводит список категорий на странице создания меню:

    function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
    	global $nav_menu_selected_id;
    	$taxonomy_name = $taxonomy['args']->name;
    
    	// paginate browsing for large numbers of objects
    	$per_page = 50;
    	$pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1;
    	$offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0;
    
    	$args = array(
    		'child_of' => 0,
    		'exclude' => '',
    		'hide_empty' => false,
    		'hierarchical' => 1,
    		'include' => '',
    		'number' => $per_page,
    		'offset' => $offset,
    		'order' => 'ASC',
    		'orderby' => 'name',
    		'pad_counts' => false,
    	);
    
    	$terms = get_terms( $taxonomy_name, $args );

    как можно повлиять на переменную $per_page = 50; в массиве $args ?

    Обратить внимание на ссылку, которую я дал. Надеюсь, сможете найти доки по использованию фильтров. Там просто, как дважды два.

    как можно повлиять на переменную $per_page = 50; в массиве $args ?

    Фильтром на хуке ‘get_terms_args’?

    Структура сайта построена таким образом

    Я о том же — неправильная структура.

    Но даже если отбросить этот факт (переделывать, как я понимаю, никто не будет), то всё равно
    а) «меню» (на сайте) можно переделать таким образом, что бы не возникала надобность его регулярно исправить.
    б) скролить и выискивать нужное в таком маленьком окошке — это же полнейшая жуть.

    Отсюда — либо переделать меню, либо улучшить визуализации выдачи при поиске (чтобы показывалась иерархия найденного). Возможно для последнего есть плагины, но мне не попадались.

    Или, что вообще легко решает множество проблем:

    6: использовать не родное меню (nav-menu), а какой-нить плагин для создания меню.

    Зы. сорри что несколько не по теме, но расценивайте это как попытку помочь искоренить причину протечки, а не совет «чем залатать дырки».

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Тема «Список рубрик в разделе меню» закрыта для новых ответов.