WordPress/PHP 获取主导航中所有链接的列表

Posted

技术标签:

【中文标题】WordPress/PHP 获取主导航中所有链接的列表【英文标题】:WordPress/PHP get list of all links in primary navigation 【发布时间】:2021-05-07 04:23:20 【问题描述】:

我正在尝试在我的 WordPress 网站的主导航中创建所有链接的列表。我正在尝试将链接输出为 URL:在使用 foreach 循环的脚本标记中。

我被困在我的 foreach 循环中尝试使用 $navItem->url 列出 navitems 链接。它不返回任何内容/错误。

我尝试过简单地写主菜单名称而不是 $locations[$menuLocations]:$locations['primary'] 但到目前为止还没有运气。

function get_nav_menu_items_by_location( $location, $args = [] ) 
    $html = '<script type="application/ld+json" >';

    // Get all locations
    $menuLocations = get_nav_menu_locations();
 
    // Get object id by location
    $object = wp_get_nav_menu_object( $locations[$menuLocations] );
 
    // Get menu items by menu name
    $menu_items = wp_get_nav_menu_items($object);
    
foreach ( $menu_items as $navItem ) 
    
    $html .= '"url":"' . $navItem->url . '"';

    $html .= "</script>";

    echo $html;

add_action('wp_head', 'get_nav_menu_items_by_location');

【问题讨论】:

【参考方案1】:

嗯...我对您的代码进行了重构,它的工作原理;)

试试这个方法:

function get_nav_items() 

   $menu_slug_to_retrieve = 'main'; // This can be main, primary, what ever...
   $locations             = get_nav_menu_locations();
   $menu                  = wp_get_nav_menu_object( $locations[ $menu_slug_to_retrieve ] );
   $menu_items            = wp_get_nav_menu_items( $menu->term_id );
   $menu_items_json       = array(); // Prepare the array to convert to json

   // Loop it
   if ( $menu_items ) 

      foreach ( $menu_items as $item ) 
          $menu_items_json[] = array( 'url' => $item->url );
      

      $html = sprintf(
          '<script type="application/ld+json" id="custom-json">%s</script>',
          json_encode( $menu_items_json )
      );

      echo $html;
   
 
 add_action( 'wp_head', 'get_nav_items' );

问候!

【讨论】:

感谢@David Gaitán!这肯定是有道理的。如果我不知道菜单名称,有什么方法可以动态获取 $menu_slug_to_retrieve? 我不确定,但我认为如果您解释自己的情况会更容易帮助您。动态获取菜单 slug 需要知道哪些参数。

以上是关于WordPress/PHP 获取主导航中所有链接的列表的主要内容,如果未能解决你的问题,请参考以下文章

深度链接导航到应用程序页面并返回 iOS 中的主页

Python爬虫如何获取页面内所有URL链接?本文详解

Python爬虫如何获取页面内所有URL链接?本文详解

Robot Framework Selenium For 循环单击导航链接失败并出现 StaleElementReferenceException

Swift 导航链接问题

在不使用导航链接的情况下获取 SwiftUI 列表中的选定项目