This was tough when I started doing it today. It is possible via feature using a CustomAction element in the elements.xml and some code. I tried a no-code solution but it was not possible.
<CustomAction
Id="HideCreateSiteInSiteActions"
Location="Microsoft.SharePoint.StandardMenu"
GroupId="SiteActions"
Sequence="901"
Title="Publishing SiteActions Menu Customization"
ControlAssembly="Your Assembly full name" ControlClass="your class full name">
</CustomAction>
Following code would go in class:
public class YourClassName : WebControl
{
protected override void OnLoad(EventArgs e)
{
var siteActions = ToolBarMenuButton.GetMenuControl(this);
siteActions.MenuControl.PreRender += (o, args) =>
{
var targetMenu = siteActions.GetMenuItem("MenuItem_CreateSite");
if (targetMenu == null) return;
siteActions.MenuControl.HiddenMenuItems.Add(targetMenu);
};
}
}
The scope of your feature would be "site". Also, don't forget to put SafeControl entry for your class in the web.config or it may not work.