PHP输出菜单项链接:要转换为json的数组



我正试图从wp_head中的自定义导航中输出所有链接的列表。我的代码有点工作,但由于某种原因,链接被输出得很有趣。

我本以为https://example.com/sample-page/

我得到了:\\/\/作为链接,而不是://

我是不是错过了一些显而易见的东西?

我的代码:

//OUTPUT MENU
function get_nav_items() {
$menu_slug_to_retrieve = 'my-custom-menu';
$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' );

这在很大程度上是预期的输出。json_encode所做的是,它通过准备一个反斜杠来逃避所有的正斜杠。如果将其包含在script元素中,这将非常方便。如果你不想要逃脱的正向斜杠,你可以通过添加以下标志来告诉php:

json_encode($str, JSON_UNESCAPED_SLASHES);

最新更新