$pages->newPage() method

Return a new Page object without saving it to the database

To create a new Page object and save it the database, use the $pages->new() or $pages->add() methods, or call save() on the Page object returned from this method.

  • When a template is specified, the pageClass can be auto-detected from the template.
  • In 3.0.152+ you may specify the Template object, name or ID instead of an $options array.
  • In 3.0.191+ you may specify a selector string for the $options argument (alternative to array), see the $pages->new() method $selector argument for details.
  • In 3.0.191+ the pageClass can also be specified as class, assuming that doesn’t collide with an existing field name.


// Create a new blank Page object
$p = $pages->newPage();

// Create a new Page object and specify properties to set with an array
$p = $pages->newPage([
  'template' => 'blog-post',
  'parent' => '/blog/posts/',
  'title' => 'Hello world',

// Same as above but using selector string (3.0.191+)
$p = $pages->newPage('template=blog-post, parent=/blog/posts, title=Hello world');

// Create new Page object using 'blog-post' template
$p = $pages->newPage('blog-post');

// Create new Page object with parent and name implied by given path (3.0.191+)
$p = $pages->newPage('/blog/posts/hello-world'); 


// basic usage
$page = $pages->newPage();

// usage with all arguments
$page = $pages->newPage($options = []);


options (optional)array, string, Template

Optionally specify array (or selector string in 3.0.191+) with any of the following:

  • template (Template|id|string): Template to use via object, ID or name. The pageClass will be auto-detected.
  • parent (Page|int|string): Parent page object, ID or path.
  • name (string): Name of page.
  • path (string): Specify /path/for/page/, name and parent (and maybe template) can be auto-detected. 3.0.191+
  • pageClass (string): Class to use for Page. If not specified, default is from template setting, or Page if no template.
  • Specify any other Page properties or fields you want to set (name, title, etc.). Note that most page fields will need to have a template set first, so make sure to include it in your options array when providing other fields.

Return value

$pages methods and properties

API reference based on ProcessWire core version 3.0.209

Twitter updates

  • Adding custom actions to ProcessWire image fields in the admin, part of this week’s dev branch additions: More
    27 January 2023
  • ProcessWire 3.0.210 new main/master version released— More
    6 January 2023
  • ProcessWire 3.0.209: Core updates and an interesting AI that knows ProcessWire– More
    30 December 2022

Latest news

  • ProcessWire Weekly #455
    In the 455th issue of ProcessWire Weekly we'll check out the latest core updates, introduce a new third party module called JkPublishPages, and more. Read on!
    Weekly.pw / 28 January 2023
  • ProcessWire 3.0.210 new main/master version
    140 commits, 55 resolved issues, dozens of new features, eight contributors, and five new pull requests make yet another great new version of ProcessWire.
    Blog / 6 January 2023
  • Subscribe to weekly ProcessWire news

“Indeed, if ProcessWire can be considered as a CMS in its own right, it also offers all the advantages of a CMF (Content Management Framework). Unlike other solutions, the programmer is not forced to follow the proposed model and can integrate his/her ways of doing things.” —Guy Verville, Spiria Digital Inc.