如何解决WordPress/PHP 获取主导航中所有链接的列表
我正在尝试在我的 wordpress 网站的主导航中创建所有链接的列表。我正在尝试将链接输出为 URL: 在使用 foreach 循环的脚本标记中。
我在我的 foreach 循环中尝试使用 $navItem->url 列出导航项链接。它不返回任何内容/错误。
代替 $locations[$menuLocations] 我也尝试过简单地写主菜单名称:$locations['primary'] 但到目前为止没有运气。
function get_nav_menu_items_by_location( $location,$args = [] ) {
$html = '<script type="application/ld+json" alt="hejtest">';
// 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');
解决方法
嗯...我对你的代码进行了重构,它的工作原理;)
试试这种方式:
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' );
问候!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。