我已经获得了以下代码,可以激活我的wordpress插件。
它确实创建了页面,但它还添加了一个我不想拥有的导航菜单项。
有人可以帮助我,因为我无法看到我出错的地方。
我知道它也添加了一个导航菜单项,因为查看表wp_posts中的数据库,post_date与post_type页面和nav_menu_item完全相同。
public static function activate() {
global $myplugin;
require_once plugin_dir_path( __FILE__ ) . 'install-sql.php';
//Add a front end page
$author_id = 9;
$slug = 'myplugin';
$title = "My Plugin";
$content = '[myplugin_render]';
$page = array(
'post_author' => 1,
'post_content' => $content,
'post_title' => $title,
'post_status' => 'publish',
'post_type' => 'page',
'comment_status' => 'closed',
'ping_status' => 'closed',
'guid' => '',
'import_id' => 0,
'context' => ''
);
if( null == get_page_by_title( $title ) ) {
wp_insert_post( $page );
} else {
$page = get_page_by_title( $title );
if ( is_page($page->ID) ) {
$post = array(
'ID' => $page->ID,
'post_content' => $content
);
wp_update_post( $post );
}
}
}
答案 0 :(得分:1)
疯狂的猜测:转到外观=>菜单,选择您的菜单,在设置下,是否选中“自动将新的顶级页面添加到此菜单”旁边的复选框?
如果是:取消选中它:)
答案 1 :(得分:0)
对于那些来这里以编程方式回避设置Automatically add new top-level pages to this menu
的人-我的解决方案是正常添加页面,然后再调用以下函数。
Example:
$pageID = wp_insert_post($args);
zeroBSCRM_wp_removePageFromMenus($pageID);
这是我从所有前端菜单中删除页面的功能(使用页面ID):
/**
* Removes a page from front-end menus by ID
*
* @param int id WordPress Page ID
*
* @return int count of removed
*/
function zeroBSCRM_wp_removePageFromMenus($pageID=-1){
// only if a valid $pageID
if ($pageID > 0){
// get menu locations
$locations = get_nav_menu_locations();
// cycle through (any) and get menu in slot
if (is_array($locations)) foreach ($locations as $location => $menuID){
// Retrieve Menu & Pages in menu
$menu = wp_get_nav_menu_object($menuID);
$pagesItem = wp_get_nav_menu_items($menu, array("object"=>"page"));
// Cycle through pages & remove target menu page link if present
if (is_array($pagesItem))
foreach ($pagesItem as $page)
if ($page->object_id == $pageID) wp_delete_post($page->db_id);
}
}
return 0;
}