Dudaevskiy
2/18/2020 - 11:16 AM

Замена стандартного вывода TOP меню Cactus на меню из WP

Как упоминает @vancoder, wp_get_nav_menu_items()это правильный путь, однако я думаю, что более подробный ответ будет более полезным для людей в будущем.

Упомянутая функция возвращает массив WP_Post Objectобъектов (поэтому вы получаете доступ к значениям со стрелкой, например $item->title).

Для базовой настройки вы можете использовать следующее:

$menuLocations = get_nav_menu_locations(); // Get our nav locations (set in our theme, usually functions.php)
                                           // This returns an array of menu locations ([LOCATION_NAME] = MENU_ID);

$menuID = $menuLocations['primary']; // Get the *primary* menu ID

$primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location.

Затем вы можете просто зациклить эту $primaryNavпеременную, например:

foreach ( $primaryNav as $navItem ) {

    echo '<li><a href="'.$navItem->url.'" title="'.$navItem->title.'">'.$navItem->title.'</a></li>';

}

поделитьсяулучшить этот ответ

Поделитесь ссылкой на этот ответ

Копировать ссылку

|

<?php
// mev.uabs.sumdu.edu.ua / httpdocs / wp-content / themes / UABS_SSU / template-parts / header / header-top-bar.php

$display_topbar = cactus_option('display_topbar');
if($display_topbar==1 || is_customize_preview() ):
    $css_class = 'cactus-top-bar';
    if( $display_topbar !=1 && is_customize_preview() )
        $css_class  .= ' hide';
    ?>
    <div class="<?php echo $css_class; ?>">

        <div class="cactus-f-microwidgets topbar_left_selective">
            <?php if( is_customize_preview() ):?>
                <span class="customize-partial-edit-shortcut customize-partial-edit-shortcut-topbar_left_selective"><button aria-label="<?php echo esc_html__( 'Click to edit this element.', 'cactus' );?>" title="<?php echo esc_html__( 'Click to edit this element.', 'cactus' );?>" class="customize-partial-edit-shortcut-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M13.89 3.39l2.71 2.72c.46.46.42 1.24.03 1.64l-8.01 8.02-5.56 1.16 1.16-5.58s7.6-7.63 7.99-8.03c.39-.39 1.22-.39 1.68.07zm-2.73 2.79l-5.59 5.61 1.11 1.11 5.54-5.65zm-2.97 8.23l5.58-5.6-1.07-1.08-5.59 5.6z"></path></svg></button></span>
            <?php endif;?>
            <?php
            $topbar_left = cactus_option('topbar_left');

            if(is_array($topbar_left) && !empty($topbar_left)):
                $html = "";
                foreach($topbar_left as $item):
                    $html .= '<span class="cactus-microwidget">';
                    if($item['link']!=''){
                        $html .= '<a href="'.esc_url($item['link']).'" target="'.esc_attr($item['target']).'">';
                    }
                    if($item['icon']!=''){
                        $html .= '<i class="fa '.esc_attr($item['icon']).'"></i>&nbsp;&nbsp;';
                    }
                    $html .= esc_attr($item['text']);
                    if($item['link']!=''){
                        $html .= '</a>';
                    }
                    $html .= '</span>';
                endforeach;
                echo $html;
            endif;
            ?>
        </div>
        <div class="cactus-f-microwidgets ">

            <div class="cactus-microwidget cactus-micronav cactus-micronav-list topbar_right_selective">
                <?php if( is_customize_preview() ):?>
                    <span class="customize-partial-edit-shortcut customize-partial-edit-shortcut-topbar_right_selective"><button aria-label="<?php echo esc_html__( 'Click to edit this element.', 'cactus' );?>" title="<?php echo esc_html__( 'Click to edit this element.', 'cactus' );?>" class="customize-partial-edit-shortcut-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M13.89 3.39l2.71 2.72c.46.46.42 1.24.03 1.64l-8.01 8.02-5.56 1.16 1.16-5.58s7.6-7.63 7.99-8.03c.39-.39 1.22-.39 1.68.07zm-2.73 2.79l-5.59 5.61 1.11 1.11 5.54-5.65zm-2.97 8.23l5.58-5.6-1.07-1.08-5.59 5.6z"></path></svg></button></span>
                <?php endif;?>
                <?php



                        $html = "";
                       // $html .= '<span class="cactus-microwidget ">';
                
                global $primaryNav;
                foreach ( $primaryNav as $navItem ) {
                    //s($navItem);
                    $html .= '<span class="cactus-microwidget "><a class="NEW-sds-item" href="'.$navItem->url.'" target="_blank">'.$navItem->title.'</a></span>';

                }
                echo $html;
                       // $html .= '</span>';

                ?>

                <!-- SOCIAL WIDGET START -->

                <!-- SOCIAL WIDGET END -->

                <!-- WPML Switcher START -->
                <?php
                if ( function_exists('icl_object_id') ) {
                    ?>
                    <div id="SDStudio-wpml-shortcode">
                        <?php echo do_shortcode( '[wpml_language_switcher type="list" flags=1 native=0 translated=0 ]' ); ?>
                    </div>
                    <?php
                }
                ?>
                <!-- WPML Switcher END -->
            </div>
        </div>
    </div>
<?php endif;?>
<?php
// For registering Multiple Menus 
    function register_my_menus() {
      register_nav_menus(
        array(
          'top-menu-1' => __( 'Top menu - 1' ),
          'top-menu-2' => __( 'Top menu - 2' )
        )
      );
    }
    add_action( 'init', 'register_my_menus' );






$menuLocations = get_nav_menu_locations(); // Get our nav locations (set in our theme, usually functions.php)
                                           // This returns an array of menu locations ([LOCATION_NAME] = MENU_ID);
$menuID = $menuLocations['top-menu-1']; // Get the *primary* menu ID
global $primaryNav;
$primaryNav = wp_get_nav_menu_items($menuID);