Wordpress пользовательское поле информации в навигационном меню? - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь получить информацию о настраиваемом поле со страницы в навигационное меню.У меня были проблемы с этим раньше ... Я просто не "получаю" меню Уокера и как оно работает.

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

В файле nav-menu-template.php я попытался изменить функцию start_el с помощьюдобавление get_post_custom_keys () так безуспешно:

$item_output .= '<a'. $attributes .'>';
$item_output .= get_post_custom_values("product_image", $item->ID);
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;

Я также пробовал get_post_meta ();и другие с ограниченным успехом.Лучшее, что я смог сделать - это получить одно из изображений, повторяющихся во всех ссылках, указав жесткое целочисленное значение.Или я смог заставить его выводить правильное значение записи / страницы в тексте, но без изображения.

Кто-нибудь знает решение ... что я делаю неправильно?

1 Ответ

1 голос
/ 22 июня 2012

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

<ul id="some-menu-id" class="my-fancy-menu">
<?php
    $menu_name = 'primary';
    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);
        foreach ( (array) $menu_items as $key => $menu_item ) {
            // at this point you can get the custom meta from the page
            $image = get_post_meta($menu_item->object_id, '_custom_field_image_url', true);
            $image_description = get_post_meta($menu_item->object_id, '_custom_field_image_description', true);
            // here we are getting the title and URL to the page
            $title = $menu_item->title;
            $url = $menu_item->url;
            $slug = basename($menu_item->url);
            // this allows us to add a current class
            if (basename($_SERVER['REQUEST_URI']) == $slug) { $current = ' current-menu-item'; } else { $current = ''; }
            $menu_list .= '<li class="page-id-'.$menu_item->object_id.$current.'"><a href="' . $url . '">' . $title . '</a><br /><p>'.$image_description.'<br />'.$image.'</p></li>';
        }
    }
    echo $menu_list;
?>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...