导航菜单中的Wordpress自定义字段信息?

时间:2012-03-12 20:29:10

标签: php wordpress menu custom-fields

我正在尝试将页面中的自定义字段信息导入导航菜单。我以前遇到过这个问题...我只是不“得到”沃克菜单及其运作方式。

基本上,除了页面标题之外,我想让它从自定义字段输出图像的URL和图像描述,并创建一个链接到普通WP页面的菜单项。

在nav-menu-template.php文件中,我尝试通过添加get_post_custom_keys()来修改start_el函数,但没有成功:

$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 个答案:

答案 0 :(得分:1)

迭代导航菜单并动态渲染可能会更容易。下面的代码将让您迭代分配给您在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>