我试图将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;
}
推荐阅读
- 将存档模板应用于帖子类别时出现未捕获的错误
- 加载特定的WordPress页面模板时,无法向body标签注入特定的类名
- 无法在WordPress网站的PHP中设置列表项类
- 无法在WordPress模板中获取get_the_tags()
- WP无法添加默认标题图像
- 尝试编辑Hemingway wordpress主题以添加”评论回复”链接
- 在自定义主题中实现jquery-ias时遇到问题
- 大数据开发Linux系统入门之netstat 命令学习
- 做软件测试需要一直培养成长的技能