Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

WordPress: Автоматичне додавання підлеглих в меню

Наша взаимовыгодная связь https://banwar.org/

Один із замовників розробки сайту на wordpress побажав формувати велику багаторівневе бічне меню, в якому перебуває кожна сторінка сайту. При цьому замість записів повинні використовуватися сторінки - замовнику так звичніше.

Природно захотілося щоб створена сторінка автоматично додавалася в меню. Інакше доведеться ручками кожну сторінку в нього прописувати. Для кореневих сторінок функціонал wordpress дозволяє цю опцію включити "з коробки": Зовнішній вигляд - Меню - вибираємо необхідне меню - ставимо галочку біля "Автоматично додавати в це меню нові сторінки верхнього рівня":

А ось для того, щоб додавалися в меню і підсторінки (дочірні сторінки) доведеться встановлювати додатковий плагін Auto Submenu .

Після активації плагіна все дочірні сторінки будь-якої батьківської сторінки буду автоматично додаватися в усі меню, де є ця батьківська сторінка, за умови що в цих меню встановлена ​​вищезгадана галочка.

Але тут виникла невелика проблема: меню дійсно формується дуже велике (значно більше 200 пунктів меню), а wordpress не розрахований на роботу з такими великими меню. Коли меню складається з понад 200 пунктів воно перестає редагуватися. Для цього доведеться в настройках PHP на хостингу збільшити значення параметра max_input_vars (встановлює максимальну можливу кількість вхідних параметрів в запиті). За замовчуванням значення max_input_vars встановлено в "1000", можна збільшити до "2000" або до "10 000". Але тоді сама сторінка починає дуже довго вантажиться і повільно працювати, що починає дратувати.

Вихід: робити не одне велике меню, а безліч дрібних, по одному меню на кожну сторінку верхнього рівня. Але тоді виникає наступна проблема: якщо у всіх меню стоїть галочка "Автоматично додавати в це меню нові сторінки верхнього рівня", то кожна нова коренева сторінка додається в усі ці меню. Значить галочку не потрібно ставити, але все одно хочеться щоб численні дочірні сторінки автоматично додавалися в необхідні меню.

Довелося трохи відредагувати код плагіна Auto Submenu, щоб він додавав дочірні сторінки в потрібні меню навіть якщо галочка не встановлена.

Нижче відредагований код, може кому стане в нагоді:

<? Php / * Plugin Name: Auto Submenu Plugin URI: http://jamocreations.com/en/artikelen/auto-submenu Description: WordPress can only automatically add new top-level pages to menus. With Auto Submenu, new child pages will also be automatically added to menus. Version: 0.2 Author: Jamo Web Creations Author URI: http://jamocreations.com/ License: GPL2 * / / * Copyright 2012 Jamo Web Creations (email: [email protected]) This program is free software; you can redistribute it and / or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * / class AutoSubmenu {/ * Constructor * / function __construct () {add_action ( 'publish_page', array ( & $ this, 'on_publish_page')); } / * When publishing a new child page, add it to the appropriate custom menu. * / Function on_publish_page ($ post_id) {// Theme supports custom menus? if (! current_theme_supports ( 'menus')) {return; } // Published page has parent? $ Post = get_post ($ post_id); if (! $ post-> post_parent) {return; } // Get menus $ menus = wp_get_nav_menus (array ( 'fields' => 'ids')); // Loop through the menus to find page parent foreach ($ menus as $ menu_id) {$ menu_parent = NULL; $ Menu_items = wp_get_nav_menu_items ($ menu_id, array ( 'post_status' => 'publish, draft')); if (! is_array ($ menu_items)) {continue; } Foreach ($ menu_items as $ menu_item) {// Item already in menu? if ($ menu_item-> object_id == $ post-> ID) {continue 2; } If ($ menu_item-> object_id == $ post-> post_parent) {$ menu_parent = $ menu_item; }} // Add new item if ($ menu_parent) {wp_update_nav_menu_item ($ menu_id, 0, array ( 'menu-item-object-id' => $ post-> ID, 'menu-item-object' => $ post -> post_type, 'menu-item-parent-id' => $ menu_parent-> ID, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish')); }}}} $ Auto_submenu = new AutoSubmenu ();

PS: після публікації запису та перевірки її на унікальність побачив що тут на github.com теж вирішили це ж питання щодо редагування плагіна.

Сподобалося? =) Поділися з друзями:

Function on_publish_page ($ post_id) {// Theme supports custom menus?
If (! current_theme_supports ( 'menus')) {return; } // Published page has parent?
Сподобалося?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: