WordPress/PHP 获取所有导航链接
WordPress/PHP get all navigation links
我正在开发一个小插件,想知道如何在主导航中获取所有链接?想知道是否有可能不知道特定主题中菜单的名称或别名。
下面我试图获取所有菜单链接并 return 它们在脚本标记中,但效果不是很好。它最终 return 收集了一堆元数据,并在一个网站上彻底破坏了网站。
目前,脚本标签仅用于测试目的,稍后我将在无序列表中使用导航链接。
function get_nav_menu_items_by_location( $location, $args = [] ) {
?>
<script type = "application/ld+json" alt="hejtest" >
<?
// Get all locations
$locations = get_nav_menu_locations();
// Get object id by location
$object = wp_get_nav_menu_object( $locations[$location] );
// Get menu items by menu name
$menu_items = wp_get_nav_menu_items( $object->name, $args );
// Return menu post objects
return $menu_items;
?>
</script>
<?
}
add_action('wp_head', 'get_nav_menu_items_by_location');
```
你不能将PHP中的数据“return”传给JS。 return
关键字告诉 PHP 您已经完成了 get_nav_menu_items_by_location
函数,并将该值赋给 调用 PHP代码.
到运行JavaScript,你需要输出一些代码,浏览器然后执行它收到 HTML.
如果你想把一些数据输出成JS易读的方式,你可以滥用JSON格式是有效的JS代码,写成echo json_encode($menu_items);
。您还需要输出代码将其分配给变量,或将其传递给函数。
如果您正在编写的函数预期 return 一些 HTML,您不想使用 echo
,并且也不想使用 ?>
。相反,您想构建一个包含 HTML 和 return 的 PHP 字符串。
所以你可能会得到这样的结果:
function get_nav_menu_items_by_location( $location, $args = [] ) {
$html = '<script type="application/ld+json" alt="hejtest">';
// Get all locations
$locations = get_nav_menu_locations();
// Get object id by location
$object = wp_get_nav_menu_object( $locations[$location] );
// Get menu items by menu name
$menu_items = wp_get_nav_menu_items( $object->name, $args );
$html .= "var my_menu_items = " . json_encode($menu_items) . ";";
$html .= "</script>";
return $html;
}
add_action('wp_head', 'get_nav_menu_items_by_location');
我正在开发一个小插件,想知道如何在主导航中获取所有链接?想知道是否有可能不知道特定主题中菜单的名称或别名。
下面我试图获取所有菜单链接并 return 它们在脚本标记中,但效果不是很好。它最终 return 收集了一堆元数据,并在一个网站上彻底破坏了网站。
目前,脚本标签仅用于测试目的,稍后我将在无序列表中使用导航链接。
function get_nav_menu_items_by_location( $location, $args = [] ) {
?>
<script type = "application/ld+json" alt="hejtest" >
<?
// Get all locations
$locations = get_nav_menu_locations();
// Get object id by location
$object = wp_get_nav_menu_object( $locations[$location] );
// Get menu items by menu name
$menu_items = wp_get_nav_menu_items( $object->name, $args );
// Return menu post objects
return $menu_items;
?>
</script>
<?
}
add_action('wp_head', 'get_nav_menu_items_by_location');
```
你不能将PHP中的数据“return”传给JS。 return
关键字告诉 PHP 您已经完成了 get_nav_menu_items_by_location
函数,并将该值赋给 调用 PHP代码.
到运行JavaScript,你需要输出一些代码,浏览器然后执行它收到 HTML.
如果你想把一些数据输出成JS易读的方式,你可以滥用JSON格式是有效的JS代码,写成echo json_encode($menu_items);
。您还需要输出代码将其分配给变量,或将其传递给函数。
如果您正在编写的函数预期 return 一些 HTML,您不想使用 echo
,并且也不想使用 ?>
。相反,您想构建一个包含 HTML 和 return 的 PHP 字符串。
所以你可能会得到这样的结果:
function get_nav_menu_items_by_location( $location, $args = [] ) {
$html = '<script type="application/ld+json" alt="hejtest">';
// Get all locations
$locations = get_nav_menu_locations();
// Get object id by location
$object = wp_get_nav_menu_object( $locations[$location] );
// Get menu items by menu name
$menu_items = wp_get_nav_menu_items( $object->name, $args );
$html .= "var my_menu_items = " . json_encode($menu_items) . ";";
$html .= "</script>";
return $html;
}
add_action('wp_head', 'get_nav_menu_items_by_location');