未捕获的错误(不能将WP_Post类型的对象用作数组)

我试图将WordPress菜单放在模板文件中。我发现使用wp_nav_menu很不舒服, 因为它输出的标记与我的静态HTML模板不兼容。我知道我可以使用自定义菜单浏览器类来修改wp_nav_menu的标记。但是, 我只想使用菜单名称及其相应的url并将其放置在我的模板中。为此, 我使用此函数获取菜单的所有属性/属性的数组。
这是此函数生成的代码…
我通过使用var_dump()找到了它。

Array ( [0] = WP_Post Object ( [ID] = 20 [post_author] = 1 [post_date] = 2017-07-10 11:50:32 [post_date_gmt] = 2017-07-10 10:50:32 [post_content] = [post_title] = About [post_excerpt] = [post_status] = publish [comment_status] = closed [ping_status] = closed [post_password] = [post_name] = about [to_ping] = [pinged] = [post_modified] = 2017-07-10 11:50:40 [post_modified_gmt] = 2017-07-10 10:50:40 [post_content_filtered] = [post_parent] = 0 [guid] = http://localhost/mySite/?p=20 [menu_order] = 1 [post_type] = nav_menu_item [post_mime_type] = [comment_count] = 0 [filter] = raw [db_id] = 20 [menu_item_parent] = 0 [object_id] = 20 [object] = custom [type] = custom [type_label] = Custom Link [title] = About [url] = # [target] = [attr_title] = [description] = [classes] = Array ( [0] = )[xfn] = )[1] = WP_Post Object ( [ID] = 21 [post_author] = 1 [post_date] = 2017-07-10 11:50:32 [post_date_gmt] = 2017-07-10 10:50:32 [post_content] = [post_title] = Things I Can Do [post_excerpt] = [post_status] = publish [comment_status] = closed [ping_status] = closed [post_password] = [post_name] = things-i-can-do [to_ping] = [pinged] = [post_modified] = 2017-07-10 11:50:40 [post_modified_gmt] = 2017-07-10 10:50:40 [post_content_filtered] = [post_parent] = 0 [guid] = http://localhost/mySite/?p=21 [menu_order] = 2 [post_type] = nav_menu_item [post_mime_type] = [comment_count] = 0 [filter] = raw [db_id] = 21 [menu_item_parent] = 0 [object_id] = 21 [object] = custom [type] = custom [type_label] = Custom Link [title] = Things I Can Do [url] = # [target] = [attr_title] = [description] = [classes] = Array ( [0] = )[xfn] = )[2] = WP_Post Object ( [ID] = 22 [post_author] = 1 [post_date] = 2017-07-10 11:50:32 [post_date_gmt] = 2017-07-10 10:50:32 [post_content] = [post_title] = A Few Accomplishments [post_excerpt] = [post_status] = publish [comment_status] = closed [ping_status] = closed [post_password] = [post_name] = a-few-accomplishments [to_ping] = [pinged] = [post_modified] = 2017-07-10 11:50:40 [post_modified_gmt] = 2017-07-10 10:50:40 [post_content_filtered] = [post_parent] = 0 [guid] = http://localhost/mySite/?p=22 [menu_order] = 3 [post_type] = nav_menu_item [post_mime_type] = [comment_count] = 0 [filter] = raw [db_id] = 22 [menu_item_parent] = 0 [object_id] = 22 [object] = custom [type] = custom [type_label] = Custom Link [title] = A Few Accomplishments [url] = # [target] = [attr_title] = [description] = [classes] = Array ( [0] = )[xfn] = )[3] = WP_Post Object ( [ID] = 23 [post_author] = 1 [post_date] = 2017-07-10 11:50:32 [post_date_gmt] = 2017-07-10 10:50:32 [post_content] = [post_title] = Contact [post_excerpt] = [post_status] = publish [comment_status] = closed [ping_status] = closed [post_password] = [post_name] = contact [to_ping] = [pinged] = [post_modified] = 2017-07-10 11:50:40 [post_modified_gmt] = 2017-07-10 10:50:40 [post_content_filtered] = [post_parent] = 0 [guid] = http://localhost/mySite/?p=23 [menu_order] = 4 [post_type] = nav_menu_item [post_mime_type] = [comment_count] = 0 [filter] = raw [db_id] = 23 [menu_item_parent] = 0 [object_id] = 23 [object] = custom [type] = custom [type_label] = Custom Link [title] = Contact [url] = # [target] = [attr_title] = [description] = [classes] = Array ( [0] = )[xfn] = ))

我的意图是获取” post_title” 和” url” 的值
我怎样才能做到这一点?
我目前正在努力处理这些代码行
function mt_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 = mt_get_menu_items ('main_menu'); < nav id="nav"> < ul> < ?php if (isset ($menu_items) ) : ?> < ?php foreach ( (array) $menu_items as $key => $menu_item ) : ?> < ?php // $menu_item_array = get_object_vars($menu_item[$key]); $menu_object = $menu_item[$key]; // this line is 98 ?> < li> // this line is 101 < a href="http://www.srcmini.com/< ?php $menu_object-> url; ?>" class="active"> < ?php $menu_object-> post_title; ?> < /a> < /li> < ?php endforeach; ?> < ?php endif; ?> < /ul> < /nav>

这将产生此错误:
致命错误:未捕获错误:无法将WP_Post类型的对象用作D:\ xampp \ htdocs \ mySite \ wp-content \ themes \ mySite \ header.php:98中的数组
#1我将在此处发布此答案以供参考…
使用foreach循环
foreach ($originalArray as $key => $data) { $post_date = $data-> post_date; // 2017-07-10 11:50:32 }

因为要访问对象内部的数据, 请使用-> 。
例如:$ data [‘ post_date’ ]至$ data-> post_date
#2【未捕获的错误(不能将WP_Post类型的对象用作数组)】你正在检索对象, 可以将其转换为数组, 如下所示:
function object_to_array($obj) { if(is_object($obj)) $obj = (array) $obj; if(is_array($obj)) { $new = array(); foreach($obj as $key => $val) { $new[$key] = object_to_array($val); } } else $new = $obj; return $new; }

    推荐阅读