php可以抓取网页数据吗(我想获取我的wp主菜单中的项目..)
优采云 发布时间: 2021-11-20 13:07php可以抓取网页数据吗(我想获取我的wp主菜单中的项目..)
我想在我的 wp 主菜单中获取项目。我尝试了一些代码,但所有代码都只返回一个空白页。我不知道我必须使用哪种方法,也不需要在页面中收录其他页面?
有没有办法直接从数据库中获取菜单项而不使用 wp 方法和函数?wp的表结构暂时不懂。所以我不完全知道表之间的关系。
谢谢。
解决方案:
如果您知道菜单的位置 ID(通常由 functions.php 中的“register_nav_menus”声明),您可以使用以下代码片段:
// GET ALL MENU OBJECTS AT SPECIFIED LOCATION
function yourprefix_get_menu_items($location_id){
//$locations = get_registered_nav_menus();
$menus = wp_get_nav_menus();
$menu_locations = get_nav_menu_locations();
if (isset($menu_locations[ $location_id ]) && $menu_locations[ $location_id ]!=0) {
foreach ($menus as $menu) {
if ($menu->term_id == $menu_locations[ $location_id ]) {
$menu_items = wp_get_nav_menu_items($menu);
break;
}
}
return $menu_items;
}
}
或者更多来自代码的简短版本:
function yourprefix_get_menu_items($menu_name){
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
return wp_get_nav_menu_items($menu->term_id);
}
}
然后使用这个数组来执行你想要的所有操作,如下图:
$menu_items = yourprefix_get_menu_items('sidebar-menu'); // replace sidebar-menu by desired location
if(isset($menu_items)){
foreach ( (array) $menu_items as $key => $menu_item ) {
...some code...
}
}
这是所有 nav_menu 数据的链接,您可以通过 mysql 请求直接从数据库中选择这些数据: