我有一个自定义代码,可以自动创建菜单并更新' post'表格让我的菜单发布。这是我的代码。
$test = array(
array(
'menu-item-db-id' => 0,
'menu-item-object-id' => 2,
'menu-item-object' => 'category',
'menu-item-parent-id' => 0,
'menu-item-type' => 'taxonomy',
'menu-item-title' => 'Rome',
'menu-item-url' => 'http://test.exmple.com/rome/',
'menu-item-target' => '',
'menu-item-classes' => '',
'menu-item-xfn' => '',
'menu-item-description' => ''
)
);
if($item_ids = wp_save_nav_menu_items( 7, $test )) {
$my_post = array (
'ID' => $item_ids,
'post_status' => 'publish',
'post_name' => $item_ids
);
wp_update_post($my_post);
}
这里的问题是当调用函数wp_update_post时,我收到了一个错误:
Warning: strip_tags() expects parameter 1 to be string, array given in /home/lingfish/public_html/wp-includes/formatting.php on line 1068
Warning: urlencode() expects parameter 1 to be string, array given in /home/lingfish/public_html/wp-includes/post.php on line 2790
Warning: preg_match() expects parameter 2 to be string, array given in /home/lingfish/public_html/wp-includes/formatting.php on line 633
Warning: strip_tags() expects parameter 1 to be string, array given in /home/lingfish/public_html/wp-includes/formatting.php on line 1068
然而,在加载页面之后,当我刷新但是评论除了这个之外的所有代码:
$my_post = array (
'ID' => $item_ids,
'post_status' => 'publish',
'post_name' => $item_ids
);
wp_update_post($my_post);
它可以工作,我有保存菜单项后它不会自动创建的帖子表,这就是调用wp_update_post时没有结果的原因。你有其他解决方案,所以我可以更新post_status字段发布,以便我的菜单可见吗?
答案 0 :(得分:2)
你不能将数组放入wp_update_post。您必须遍历$ item ID并使用字符串值。实施例;
if($item_ids = wp_save_nav_menu_items( 7, $test )) {
foreach( $item_ids AS $single_item_id ) {
$my_post = array (
'ID' => $single_item_id,
'post_status' => 'publish',
'post_name' => $single_item_id
);
wp_update_post($my_post);
}
}
答案 1 :(得分:0)
$my_post = array (
'ID' => $item_ids,
'post_status' => 'publish',
'post_name' => $item_ids
);
wp_update_post($my_post);
问题是行:post_name' => $item_ids
wp想要一个STRING,你给它一个数组。
循环访问ID并逐个更改它们。