User login

How to programmatically rename a content type (change node type machine name)

Set old_type if you want to programmatically update a node type / machine name.

(This is not about changing the type of a node, but changing what type is called on the machine-info level.)

$type->old_type is what node_type_save() checks for when updating a node type, if it's not set it will create a new node type even if orig_type is set to an existing bundle. So really all you need to do right before saving a modified content type is set the old_type to the orig_type, such as:

<?php
$type
= node_type_load('example');
$type->type = 'new_machine_name';
$type->old_type = $type->orig_type// This will be 'example'.
node_type_save($type); // This will now result in SAVED_UPDATED (2)
?>

As noted when documenting this at the node_type_save API page, why orig_type is documented but old_type is checked for determining if we are renaming a node type, i have no idea and would greatly appreciate enlightenment.

Searched words: 
drupal programmatic rename content type drupal programmatic change machine name of content type drupal drupal 7 update node type machine-readable name

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <blockquote> <small> <h2> <h3> <h4> <h5> <h6> <sub> <sup> <p> <br> <strike> <table> <tr> <td> <thead> <th> <tbody> <tt> <output>
  • Lines and paragraphs break automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.