如何从wordpress菜单中获取单个特定项目
How to get a single specific item from wordpress menu
如何从 wordpress 菜单中获取特定项目?函数 wp_nav_menu
returns 所有项目,我想得到例如列表中的第二个 link。
函数:
// HTML5 Blank navigation
function html5blank_nav()
{
wp_nav_menu(
array(
'theme_location' => 'header-menu',
'menu' => '',
'container' => '',
'container_class' => 'menu-{menu slug}-container',
'container_id' => '',
'menu_class' => '',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul class="ul-menu"> %3$s </ul>',
'depth' => 0,
'walker' => ''
)
);
}
输出:
<ul class="ul-menu">
<li><a href="#">menu item 1</a></li>
<li><a href="#">menu item 2</a></li>
<li><a href="#">menu item 3</a></li>
</ul>
期望的输出:
<li><a href="#">menu item 2</a></li>
请注意:这必须是服务器端解决方案,我不希望通过 CSS 或 JavaScript 来定位菜单项。
提前致谢!
改用wp_get_nav_menu_items($menu, $args)
。
你的情况我相信
$args = array(
'order' => 'ASC',
'orderby' => 'menu_order',
'post_type' => 'nav_menu_item',
'post_status' => 'publish',
'output' => ARRAY_A,
'output_key' => 'menu_order',
'nopaging' => true,
'update_post_term_cache' => false );
wp_get_nav_menu_items('header-menu', $args);
应该return 菜单列表对象数组。您可以使用第二个并将内容放入列表项中,或者您想要对其执行的任何操作。
https://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items
逻辑上没有新内容,但我将之前的解决方案放入了一个 returns 输出的函数中。这使代码更易于阅读。您必须将菜单项数组作为参数放入函数中。
$menu_items = wp_get_nav_menu_item( 'header-menu', $args );
echo get_menu_item( 2, $menu_items );
function get_menu_item( $item_number, $items ) {
$output = '<li><a href="#">' . $items[ $item_number ][ "post_title" ] . '</a></li>';
return $output;
}
这是查看数据的一种方法:
function nav_menu_example($items){
foreach($items as $item){
if ($item->post_title == '<your-nav-menu-item-name>') {
// Do something with it...
var_dump($item->post_title);
}
}
return $items;
}
add_filter('wp_nav_menu_objects', 'nav_menu_example');
如何从 wordpress 菜单中获取特定项目?函数 wp_nav_menu
returns 所有项目,我想得到例如列表中的第二个 link。
函数:
// HTML5 Blank navigation
function html5blank_nav()
{
wp_nav_menu(
array(
'theme_location' => 'header-menu',
'menu' => '',
'container' => '',
'container_class' => 'menu-{menu slug}-container',
'container_id' => '',
'menu_class' => '',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul class="ul-menu"> %3$s </ul>',
'depth' => 0,
'walker' => ''
)
);
}
输出:
<ul class="ul-menu">
<li><a href="#">menu item 1</a></li>
<li><a href="#">menu item 2</a></li>
<li><a href="#">menu item 3</a></li>
</ul>
期望的输出:
<li><a href="#">menu item 2</a></li>
请注意:这必须是服务器端解决方案,我不希望通过 CSS 或 JavaScript 来定位菜单项。
提前致谢!
改用wp_get_nav_menu_items($menu, $args)
。
你的情况我相信
$args = array(
'order' => 'ASC',
'orderby' => 'menu_order',
'post_type' => 'nav_menu_item',
'post_status' => 'publish',
'output' => ARRAY_A,
'output_key' => 'menu_order',
'nopaging' => true,
'update_post_term_cache' => false );
wp_get_nav_menu_items('header-menu', $args);
应该return 菜单列表对象数组。您可以使用第二个并将内容放入列表项中,或者您想要对其执行的任何操作。
https://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items
逻辑上没有新内容,但我将之前的解决方案放入了一个 returns 输出的函数中。这使代码更易于阅读。您必须将菜单项数组作为参数放入函数中。
$menu_items = wp_get_nav_menu_item( 'header-menu', $args );
echo get_menu_item( 2, $menu_items );
function get_menu_item( $item_number, $items ) {
$output = '<li><a href="#">' . $items[ $item_number ][ "post_title" ] . '</a></li>';
return $output;
}
这是查看数据的一种方法:
function nav_menu_example($items){
foreach($items as $item){
if ($item->post_title == '<your-nav-menu-item-name>') {
// Do something with it...
var_dump($item->post_title);
}
}
return $items;
}
add_filter('wp_nav_menu_objects', 'nav_menu_example');