[Помогите] Вёрстка шаблона, вывод ссылок в меню на основе таблицы

Тема в разделе "Wordpress", создана пользователем Rudoy1488, 23 июл 2014.

Модераторы: DzSoft, Sorcus
  1. Rudoy1488

    Rudoy1488 Постоялец

    Регистр.:
    29 июл 2013
    Сообщения:
    135
    Симпатии:
    57
    Версия Wordpress - последняя
    Плагинов нет
    Тема - уникальная


    Сверстал шаблон, перенёс в вордпрес всё хорошо за исключением одного но, на скрине видно меню с видами работ, оно сделано на основе таблицы, что бы сделать ссылки меню динамическими я подключил в функциях вордпресса меню, создал 21 страницу и 21 пукт меню для каждой. Получается что в каждой ячейке таблицы выводиться отдельное меню (не смог придумать другого способа). Следовательно увеличилось число запросов к базе, следовательно увеличилась нагрузка на сервер...я уже близок к тому что бы заменить ссылки на статические. Подскажите есть ли какое нибудь решение в данном случае что бы уменьшить колличетво запросов к базе или самое адекватное - вставить прямые ссылки. Спасибо

    2014-07-23 12_05_29-Промышленный альпинизм Санкт-Петербург.jpg
     
  2. Avrora

    Avrora Постоялец

    Регистр.:
    12 фев 2010
    Сообщения:
    73
    Симпатии:
    48
    Можете продублировать здесь код таблицы с меню в шаблоне?
     
  3. Rudoy1488

    Rudoy1488 Постоялец

    Регистр.:
    29 июл 2013
    Сообщения:
    135
    Симпатии:
    57
    Код:
        <div class="menu1">
        <table width="240" cellpadding="4px" cellspacing="6px">
      <tr>
        <td>
    <?php wp_nav_menu('menu=as1&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
     
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=as2&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=as3&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=as4&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=as5&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=as6&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=as7&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
    </table>
    <table width="260" cellpadding="4px" cellspacing="6px">
      <tr>
        <td><?php wp_nav_menu('menu=center1&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=center2&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=center3&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=center4&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=center5&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=center6&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=center7&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
    </table>
    <table width="260" cellpadding="4px" cellspacing="6px">
      <tr>
        <td><?php wp_nav_menu('menu=right1&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=right2&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=right3&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=right4&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=right5&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=right6&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
      <tr>
        <td><?php wp_nav_menu('menu=right7&menu_class=menu-left-container&items_wrap=%3$s'); ?></td>
       
      </tr>
    </table>
        </div>
     
  4. Teceract

    Teceract

    Регистр.:
    15 фев 2009
    Сообщения:
    171
    Симпатии:
    78
    По сути каждый раз идет обращение к массиву wp_nav_menu.
    Чем именно вы проверяли запросы к бд?

    Вы создаете структуру меню в админке с именем 'menu1' и там у вас идет список того, что вы показали в примере вывода меню, если да, то можно использовать код намного проще:

    PHP:
    <?php
    wp_nav_menu
    (array(

    'menu'            => 'menu1',
    'theme_location' => 'menu1',
    'container_class' => 'menu-left-container',
    'echo' => true,
    'items_wrap' => '%3$s'
    )
    );
    ?>

    <style>
    .menu-left-container li {background: url('https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-ios7-arrow-right-16.png') no-repeat 0px 13px; padding: 0px 0px 0px 18px; text-align: left; width: 240px;}
    </style>
    результат:
    [​IMG]
     
    Последнее редактирование: 23 июл 2014
  5. Rudoy1488

    Rudoy1488 Постоялец

    Регистр.:
    29 июл 2013
    Сообщения:
    135
    Симпатии:
    57
    Вот таким вот образом:

    Код:
    <?php if (is_user_logged_in()) { ?>
    <?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.
    <?php } ?>

    да мне именно в таблице надо меню выводить)
     
  6. Avrora

    Avrora Постоялец

    Регистр.:
    12 фев 2010
    Сообщения:
    73
    Симпатии:
    48
    Код:
        $menu_name = 'custom_menu_slug';
    
        if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
        $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
    
        $menu_items = wp_get_nav_menu_items($menu->term_id);
    
        $menu_list = '<div id="menu-' . $menu_name . '"><table>';
        foreach ( (array) $menu_items as $key => $menu_item ) {
            $title = $menu_item->title;
            $url = $menu_item->url;
            $menu_list .= '<tr><td><a href="' . $url . '">' . $title . '</a></td></tr>';
        }
        $menu_list = '</table></div>';
        } else {
        $menu_list = '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>';
        }
        
    В итоге должно получится три таких куска кода. Можно конечно упростить здесь все, но у меня к сожалению нету на чем протестировать.