我正在创建一个脚本,自动从另一个CMS构建wordpress站点。我可以更改每一个设置:主题、选项、子域、网站标题等。
但让我困惑的是能够创建自定义菜单。下面的代码应该可以为我做到这一点。然而事实并非如此,我完全不知道该怎么办。
此代码没有在管理面板中执行(它不是插件)。它实际上位于wordpress的顶部,包括wp load和wp admin functions页面。
$mymenu = wp_get_nav_menu_object("Main Navigation Menu");
$menuID = (int) $mymenu->term_id;
$itemData = array(
\'menu-item-db-id\' => 0,
\'menu-item-object-id\' => $pageId,
\'menu-item-object\' => \'page\',
\'menu-item-type\' => \'post_type\',
\'menu-item-parent-id\' => 0,
\'menu-item-position\' => $itemOrder,
\'menu-item-title\' => $pageData[\'title\'],
\'menu-item-url\' => get_permalink($pageId),
\'menu-item-description\' => $pageData[\'post_content\'],
\'menu-item-attr-title\' => $pageData[\'post_excerpt\'],
\'menu-item-status\' => \'publish\',<br />
\'menu-item-target\' => \'\'<br />
);
$thisMenuItem = wp_update_nav_menu_item($menuID, 0, $itemData);
$itemData是来自另一个CMS的数据加上将其保存在wordpress中以生成我想要的菜单项的结果。任何关于保存wp\\U update\\u nav\\u菜单项的帮助都会非常有用。同样,这是在不使用管理面板的情况下创建自定义菜单`
SO网友:Andrej
虽然Paul的回答确实很有帮助,并且肯定为我指明了正确的方向,但他的代码对我的问题不太管用。
基本上,功能wp_get_nav_menu_object()
返回$menu
具有(除其他外)的对象term_id
和term_taxonomy_id
属性。
在我的客户端WP实例上term_id
和term_taxonomy_id
都不一样了。
Paul所做的是插入term_id
属性并将其链接到term_taxonomy_id
列,但在我的情况下,我必须插入term_taxonomy_id
来自的属性$menu
对象(并查看命名-我相信这是正确的)。
这是link 如果你想检查一下term_id
和term_taxonomy_id
.
最后,我的代码是这样的:
$wpdb->insert(
$wpdb->term_relationships,
array(
"object_id" => $menu_item_id,
"term_taxonomy_id" => $menu->term_taxonomy_id
),
array(
"%d",
"%d"
)
);