Somewhen, I need to create a content type inherited from a custom content type (or OOTB content type). However, I want to remove some field from parent content type. After working hours, I realized that there is a property inherits in content type definition is defined as:
Optional Boolean. The value of this attribute determines whether the content type inherits fields from its parent content type when it is created.
If Inherits is TRUE, the child content type inherits all fields that are in the parent, including fields that users have added.
If Inherits is FALSE or absent and the parent content type is a built-in type, the child content type inherits only the fields that were in the parent content type when SharePoint Foundation was installed. The child content type does not have any fields that users have added to the parent content type.
If Inherits is FALSE or absent and the parent content type was provisioned by a sandboxed solution, the child does not inherit any fields from the parent.
https://msdn.microsoft.com/en-us/library/aa544268(v=office.15).aspx
So, to remove the Title field, for example, using the RemoveFieldRef , you must also update Inherits=”FALSE” and I always include Overwrite=”TRUE“. Like these following:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <ContentType ID="0x010100C568DB52D9D0A14D9B2FDCC96666E9F20079481" Name="My Content type" Group="Custom Content types" Inherits="FALSE" Overwrite="TRUE" Version="0"> <FieldRefs> <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" /> </FieldRefs> </ContentType> </Elements>
Hope it’s helful.