WP_UPDATE_NAV_MENU_ITEM未保存在多站点API中

时间:2012-11-20 作者:Paul

我正在创建一个脚本,自动从另一个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菜单项的帮助都会非常有用。同样,这是在不使用管理面板的情况下创建自定义菜单`

2 个回复
最合适的回答,由SO网友:Paul 整理而成

$wpdb->insert( 
    $wpdb->term_relationships, 
    array(
        "object_id" => $thisMenuItem, 
        "term_taxonomy_id" => $menuID
    ), 
    array( "%d", "%d" ) 
);
问题代码中缺少此项
它允许菜单项绑定到导航菜单本身。

SO网友:Andrej

虽然Paul的回答确实很有帮助,并且肯定为我指明了正确的方向,但他的代码对我的问题不太管用。

基本上,功能wp_get_nav_menu_object() 返回$menu 具有(除其他外)的对象term_idterm_taxonomy_id 属性。

在我的客户端WP实例上term_idterm_taxonomy_id 都不一样了。

Paul所做的是插入term_id 属性并将其链接到term_taxonomy_id 列,但在我的情况下,我必须插入term_taxonomy_id 来自的属性$menu 对象(并查看命名-我相信这是正确的)。

这是link 如果你想检查一下term_idterm_taxonomy_id.

最后,我的代码是这样的:

$wpdb->insert(
    $wpdb->term_relationships, 
    array(
        "object_id"        => $menu_item_id, 
        "term_taxonomy_id" => $menu->term_taxonomy_id
    ), 
    array(
        "%d", 
        "%d"
    )
);

结束

相关推荐

Menus like a CMS

以下是一些内容的结构示例:Parent A -- Child A -- Child B Parent B -- Child C -- Child D Parent A 应链接到的内容Child A 和Parent B 应链接到的内容Child C. 除此之外,我不确定这是否应该完全由wordpress中的“菜单”来管理,或者它是否应该是Parent A 包含子页面的页面。唯一的问题是Parent A 不是真正的内容,只是链接到Child A.如果你需要一个真