code: def new_placeholder_sp(id_, name, ph_type, orient, sz, idx):
          
          tmpl = CT_Shape._ph_sp_tmpl()
          xml = tmpl % (id_, name)
          sp = parse_xml(xml)
  
          ph = sp.nvSpPr.nvPr.get_or_add_ph()
          ph.type = ph_type
          ph.idx = idx
          ph.orient = orient
          ph.sz = sz
  
          placeholder_types_that_have_a_text_frame = (
              PP_PLACEHOLDER.TITLE, PP_PLACEHOLDER.CENTER_TITLE,
              PP_PLACEHOLDER.SUBTITLE, PP_PLACEHOLDER.BODY,
              PP_PLACEHOLDER.OBJECT
          )
  
          if ph_type in placeholder_types_that_have_a_text_frame:
              sp.append(CT_TextBody.new())
  
          return sp
docs: Return a new ``<p:sp>`` element tree configured as a placeholder
          shape.