$page API variable / Page class

Class used by all Page objects in ProcessWire.

The $page API variable represents the current page being viewed. However, the documentation here also applies to all Page objects that you may work with in the API. We use $page as the most common example throughout the documentation, but you can substitute that with any variable name representing a Page.


Click any linked item for full usage details and examples. Hookable methods are indicated with the icon. In addition to those shown below, the Page class also inherits all the methods and properties of: WireData and Wire.

Show $var?             Show args?        

Common

NameReturnSummary 
$page->child()
Page NullPageReturn the page’s first single child that matches the given selector.
Can also be used as property: $page->child
 
$page->children()
PageArray arrayReturn this page’s children, optionally filtered by a selector
Can also be used as property: $page->children
 
$page->find()
PageArrayFind descendant pages matching given selector 
$page->findOne()
Page NullPageFind one descendant page matching given selector 
$page->get(string $key)
mixedGet the value of a Page property (see details for several options) 
$page->getMultiple($keys)
arrayGet multiple Page property/field values in an array 
$page->hasChildren()
intReturn the number of visible children, optionally with conditions
Can also be used as property: $page->hasChildren
 
$page->hasFile(string $file)
bool stringDoes Page have given filename in its files directory? 
$page->hasStatus($status)
boolDoes this page have the given status? 
$page->httpUrl()
stringReturns the URL to the page, including scheme and hostname
Can also be used as property: $page->httpUrl
 
$page->id int The numbered ID of the current page  
$page->if($key)
mixed string boolIf value is available for $key return or call $yes condition (with optional $no condition)
$page->name string The name assigned to the page, as it appears in the URL  
$page->numChildren()
intReturn number of all children, optionally with conditions
Can also be used as property: $page->numChildren
 
$page->numParents()
intReturn number of parents (depth relative to homepage) that this page has, optionally filtered by a selector
Can also be used as property: $page->numParents
 
$page->of()
boolGet or set the current output formatting state of the page 
$page->parent()
PageReturn this page’s parent Page, or–if given a selector–the closest matching parent.
Can also be used as property: $page->parent
 
$page->parents()
PageArrayReturn this page’s parent pages, or the parent pages matching the given selector.
Can also be used as property: $page->parents
 
$page->path()
stringReturns the Page’s path from the ProcessWire installation root.
Can also be used as property: $page->path
$page->rootParent()
PageGet the lowest-level, non-homepage parent of this page
Can also be used as property: $page->rootParent
$page->save()
boolSave the entire page to the database, or just a field from it 
$page->set(string $key, mixed $value)
Page WireDataSet the value of a page property 
$page->template()
Template nullGet or set template
Can also be used as property: $page->template
 
$page->title string The page’s title (headline) text 
$page->url()
stringReturns the URL to the page (optionally with additional $options)
Can also be used as property: $page->url
 

Traversal

NameReturnSummary 
$page->child()
Page NullPageReturn the page’s first single child that matches the given selector.
Can also be used as property: $page->child
 
$page->children()
PageArray arrayReturn this page’s children, optionally filtered by a selector
Can also be used as property: $page->children
 
$page->closest($selector)
Page NullPageFind the closest parent page matching your selector 
$page->descendant()
Page NullPage) Find one descendant page, alias of `Page::findOne()`, see that method for details. @since 3.0.116
$page->descendants()
PageArray) Find descendant pages, alias of `Page::find()`, see that method for details. @since 3.0.116
$page->find()
PageArrayFind descendant pages matching given selector 
$page->findOne()
Page NullPageFind one descendant page matching given selector 
$page->hasChildren()
intReturn the number of visible children, optionally with conditions
Can also be used as property: $page->hasChildren
 
$page->hasLinks int Number of visible pages (to current user) linking to this page in Textarea/HTML fields.  
$page->hasReferences int Number of visible pages (to current user) referencing this page with page reference fields.  
$page->index()
intReturn the index/position of this page relative to siblings.
Can also be used as property: $page->index
 
$page->links()
PageArrayReturn pages linking to this one (in Textarea/HTML fields)
Can also be used as property: $page->links
$page->matches($s)
boolGiven a selector, return whether or not this Page matches using runtime/memory comparison 
$page->matchesDatabase($s)
boolGiven a selector, return whether or not this Page matches by querying the database 
$page->next()
Page NullPageReturn the next sibling page
Can also be used as property: $page->next
 
$page->nextAll()
PageArray intReturn all sibling pages after this one, optionally matching a selector 
$page->nextUntil()
PageArrayReturn all sibling pages after this one until matching the one specified 
$page->numChildren()
intReturn number of all children, optionally with conditions
Can also be used as property: $page->numChildren
 
$page->numDescendants()
intReturn number of descendants (children, grandchildren, great-grandchildren, …), optionally with conditions
Can also be used as property: $page->numDescendants
 
$page->numLinks int Total number of pages manually linking to this page in Textarea/HTML fields.  
$page->numReferences int Total number of pages referencing this page with Page reference fields.  
$page->numReferencing int Total number of other pages this page is pointing to (referencing) with Page fields.  
$page->parent()
PageReturn this page’s parent Page, or–if given a selector–the closest matching parent.
Can also be used as property: $page->parent
 
$page->parents()
PageArrayReturn this page’s parent pages, or the parent pages matching the given selector.
Can also be used as property: $page->parents
 
$page->parentsUntil()
PageArrayReturn all parents from current page till the one matched by $selector 
$page->prev()
Page NullPageReturn the previous sibling page
Can also be used as property: $page->prev
 
$page->prevAll()
Page NullPage intReturn all sibling pages before this one, optionally matching a selector 
$page->prevUntil()
PageArrayReturn all sibling pages before this one until matching the one specified 
$page->references()
PageArray arrayReturn pages that have Page reference fields pointing to this one (references)
Can also be used as property: $page->references
$page->referencing PageArray Return pages that this page is referencing by way of Page reference fields.  
$page->rootParent()
PageGet the lowest-level, non-homepage parent of this page
Can also be used as property: $page->rootParent
$page->siblings()
PageArrayReturn this Page’s sibling pages, optionally filtered by a selector.
Can also be used as property: $page->siblings
 

Manipulation

NameReturnSummary 
$page->addStatus($statusFlag)
$thisAdd the specified status to this page 
$page->addUrl($url)
boolAdd a new URL that redirects to this page and save immediately (returns false if already taken).
$page->delete()
bool intDelete this page from the database 
$page->isChanged()
boolHas the Page changed since it was loaded? 
$page->of()
boolGet or set the current output formatting state of the page 
$page->removeStatus($statusFlag)
$thisRemove the specified status from this page 
$page->removeUrl($url)
boolRemove a URL that redirects to this page and save immediately.
$page->resetTrackChanges()
$thisClears out any tracked changes and turns change tracking ON or OFF 
$page->save()
boolSave the entire page to the database, or just a field from it 
$page->set(string $key, mixed $value)
Page WireDataSet the value of a page property 
$page->setAndSave($key)
boolQuickly set field value(s) and save to database 
$page->setName(string $value)
$thisSet the page name, optionally for specific language
$page->setQuietly(string $key, mixed $value)
$thisQuietly set the value of a page property. 
$page->status()
int array PageGet or set current status
Can also be used as property: $page->status
 
$page->trash()
boolMove this page to the trash 

Date time

NameReturnSummary 
$page->created int Unix timestamp of when the page was created.  
$page->createdStr string Date/time when the page was created (formatted date/time string).  
$page->modified int Unix timestamp of when the page was last modified.  
$page->modifiedStr string Date/time when the page was last modified (formatted date/time string).  
$page->published int Unix timestamp of when the page was published.  
$page->publishedStr string Date/time when the page was published (formatted date/time string).  

Access

NameReturnSummary 
$page->addable()
boolReturns true if the current user can add children to the page, false if not. Optionally specify the page to be added for additional access checking.
Can also be used as property: $page->addable
$page->deletable()
boolAlias of deleteable().
Can also be used as property: $page->deletable
$page->deleteable()
boolReturns true if the page is deleteable by the current user, false if not.
Can also be used as property: $page->deleteable
$page->editable()
boolReturns true if the page (and optionally field) is editable by the current user, false if not.
Can also be used as property: $page->editable
$page->getAccessParent()
Page NullPageReturns the page from which role/access settings are inherited from 
$page->getAccessRoles()
PageArrayReturn Roles (PageArray) that have access to this page 
$page->getAccessTemplate()
Template nullReturns the template from which role/access settings are inherited from 
$page->hasAccessRole($role)
boolReturns whether this page has the given access role 
$page->listable()
boolReturns true if the page is listable by the current user, false if not.
Can also be used as property: $page->listable
$page->moveable()
boolReturns true if the current user can move this page. Optionally specify the new parent to check if the page is moveable to that parent.
Can also be used as property: $page->moveable
$page->publishable()
boolReturns true if the page is publishable by the current user, false if not.
Can also be used as property: $page->publishable
$page->restorable()
boolReturns true if page is in the trash and is capable of being restored to its original location. @since 3.0.107
$page->sortable()
boolReturns true if the current user can change the sort order of the current page (within the same parent).
Can also be used as property: $page->sortable
$page->trashable()
boolReturns true if the page is trashable by the current user, false if not.
Can also be used as property: $page->trashable
$page->viewable()
boolReturns true if the page (and optionally field) is viewable by the current user, false if not.
Can also be used as property: $page->viewable

Output rendering

NameReturnSummary 
$page->edit()
string bool mixedGet front-end editable output for field (requires PageFrontEdit module to be installed)
$page->of()
boolGet or set the current output formatting state of the page 
$page->render()
string mixedReturns rendered page markup. Please see the `PageRender::renderPage()` method for arguments and usage details.
Can also be used as property: $page->render
$page->renderField(string $fieldName)
mixed stringRender given $fieldName using site/templates/fields/ markup file
$page->renderValue(mixed $value)
mixed stringRender given $value using /site/templates/fields/ markup file

Status

NameReturnSummary 
$page->addStatus($statusFlag)
$thisAdd the specified status to this page 
$page->hasStatus($status)
boolDoes this page have the given status? 
$page->is($status)
boolDoes this page have the specified status number or template name? 
$page->isHidden()
boolDoes this page have a 'hidden' status? 
$page->isLocked()
boolDoes this page have a 'locked' status? 
$page->isTrash()
boolIs this Page in the trash? 
$page->isUnpublished()
boolDoes this page have a 'unpublished' status? 
$page->removeStatus($statusFlag)
$thisRemove the specified status from this page 
$page->status()
int array PageGet or set current status
Can also be used as property: $page->status
 
$page->statusPrevious int null Previous status, if status was changed. Null if not.  

Constants

NameReturnSummary 
Page::statusHidden const1024Page is hidden and excluded from page finding methods unless overridden by selector (name: "hidden"). 
Page::statusIncomplete const128 
Page::statusLocked const4Indicates page is locked for changes (name: "locked") 
Page::statusUnpublished const2048Page is unpublished (not publicly visible) and excluded from page finding methods unless overridden (name: "unpublished"). 

Languages

Multi-language methods require these core modules: LanguageSupport, LanguageSupportFields, LanguageSupportPageNames.

NameReturnSummary 
$page->getLanguageName()
array stringGet page name for language(s). If given a Language object, it returns a string. If given array of language names, or argument omitted, it returns an array like `[ 'default' => 'hello', 'es' => 'hola' ];`. @since 3.0.236
$page->getLanguageStatus()
array boolGet active status for language(s). If given a $language (Language or name of language) it returns a boolean. If given multiple language names (array), or argument omitted, it returns array like `[ 'default' => true, 'fr' => false ];`. @since 3.0.236
$page->getLanguageValue($language, $field)
mixedGet value for field in language (requires LanguageSupport module). $language may be ID, language name or Language object. Field should be field name (string).
$page->getLanguageValues($field)
arrayGet values for field or one or more languages (requires LanguageSupport module). $field should be field/property name (string), $langs should be array of language names, or omit for all languages. Returns array of values indexed by language name. @since 3.0.236
$page->getLanguages()
PageArray nullGet languages active for this page and viewable by current user 
$page->localHttpUrl()
stringReturn the page URL (including scheme and hostname) in the current user's language, or specify $language argument (Language object, name, or ID).
$page->localName()
stringReturn the page name in the current user’s language, or specify $language argument (Language object, name, or ID), or TRUE to use default page name when blank (instead of 2nd argument).
$page->localPath()
stringReturn the page path in the current user's language, or specify $language argument (Language object, name, or ID).
$page->localUrl()
stringReturn the page URL in the current user's language, or specify $language argument (Language object, name, or ID).
$page->setLanguageName($language)
PageSet page name for language with `$page->setLanguageName('es', 'hola');` or set multiple with `$page->setLanguageName([ 'default' => 'hello', 'es' => 'hola' ]);` @since 3.0.236
$page->setLanguageStatus($language)
PageSet active status for language(s), can be called as `$page->setLanguageStatus('es', true);` or `$page->setLanguageStatus([ 'es' => true, 'br' => false ]);` to set multiple. @since 3.0.236
$page->setLanguageValue($language, $field, $value)
PageSet value for field in language (requires LanguageSupport module). $language may be ID, language name or Language object. Field should be field name (string).
$page->setLanguageValues($field, array $values)
PageSet value for field in one or more languages (requires LanguageSupport module). $field should be field/property name (string), $values should be array of values indexed by language name. @since 3.0.236

System

Most system properties directly correspond to columns in the pages database table.

NameReturnSummary 
$page->created int Unix timestamp of when the page was created.  
$page->created_users_id int ID of created user.  
$page->id int The numbered ID of the current page  
$page->modified int Unix timestamp of when the page was last modified.  
$page->modified_users_id int ID of last modified user.  
$page->name string The name assigned to the page, as it appears in the URL  
$page->parent_id int The numbered ID of the parent page or 0 if homepage or not assigned.  
$page->published int Unix timestamp of when the page was published.  
$page->sort int Sort order of this page relative to siblings (applicable when manual sorting is used).  
$page->sortPrevious int null Previous sort order, if changed (3.0.235+)  
$page->sortfield()
stringReturn the field name by which children are sorted
Can also be used as property: $page->sortfield
 
$page->templates_id int The numbered ID of the template usedby this page.  

Advanced

NameReturnSummary 
$page->count()
intReturns number of children page has, affected by output formatting mode. 
$page->draft()
ProDraft int string Page arrayHelper method for drafts (added by ProDrafts).
$page->fieldgroup Fieldgroup Fieldgroup used by page template. Shorter alias for $page->template->fieldgroup (same as $page->fields)  
$page->fields Fieldgroup All the Fields assigned to this page (via its template). Returns a Fieldgroup.  
$page->getField($field)
Field nullGet a Field object in context or NULL if not valid for this page 
$page->getFields()
FieldsArrayReturns a FieldsArray of all Field objects in the context of this Page 
$page->getFormatted(string $key)
mixedGet the formatted value of a field, regardless of output formatting state 
$page->getInputfield(string $fieldName)
Inputfield InputfieldWrapper nullGet a single Inputfield for the given field name 
$page->getInputfields()
null InputfieldWrapperReturn all Inputfield objects necessary to edit this page 
$page->getIterator()
ArrayObjectEnables iteration of the page's properties and fields with PHP’s foreach() 
$page->getMarkup(string $key)
stringReturn the markup value for a given field name or {tag} string
$page->getText(string $key)
stringSame as getMarkup() except returned value is plain text 
$page->getUnformatted(string $key)
mixedGet the unformatted value of a field, regardless of current output formatting state 
$page->hasField($field)
bool stringReturns whether or not given $field name, ID or object is valid for this Page 
$page->isPublic()
boolIs this page public and viewable by all?
$page->meta()
WireDataDB string array int floatGet or set page’s persistent meta data 
$page->outputFormatting bool Whether output formatting is enabled or not.  
$page->setQuietly(string $key, mixed $value)
$thisQuietly set the value of a page property. 
$page->setUnformatted(string $key, mixed $value)
selfSet the unformatted value of a field, regardless of current output formatting state 

For hooks

These methods are only useful for hooking and should not be called directly.

NameReturnSummary 
$page->callUnknown(string $method, array $arguments)
null mixedIf method call resulted in no handler, this hookable method is called.
$page->edit()
string bool mixedGet front-end editable output for field (requires PageFrontEdit module to be installed)
$page->getUnknown(string $key)
null mixedHookable method called when a request to a field was made that didn't match anything
$page->loaded()
(nothing)For hooks to listen to, triggered when page is loaded and ready

Urls

NameReturnSummary 
$page->addUrl($url)
boolAdd a new URL that redirects to this page and save immediately (returns false if already taken).
$page->editUrl()
stringReturn the URL necessary to edit this page
Can also be used as property: $page->editUrl
 
$page->httpUrl()
stringReturns the URL to the page, including scheme and hostname
Can also be used as property: $page->httpUrl
 
$page->localHttpUrl()
stringReturn the page URL (including scheme and hostname) in the current user's language, or specify $language argument (Language object, name, or ID).
$page->localPath()
stringReturn the page path in the current user's language, or specify $language argument (Language object, name, or ID).
$page->localUrl()
stringReturn the page URL in the current user's language, or specify $language argument (Language object, name, or ID).
$page->path()
stringReturns the Page’s path from the ProcessWire installation root.
Can also be used as property: $page->path
$page->removeUrl($url)
boolRemove a URL that redirects to this page and save immediately.
$page->url()
stringReturns the URL to the page (optionally with additional $options)
Can also be used as property: $page->url
 
$page->urls()
arrayReturn all URLs that this page can be accessed from (excluding URL segments and pagination)
Can also be used as property: $page->urls
 

Files

NameReturnSummary 
$page->filesManager()
PagefilesManagerReturn instance of PagefilesManager specific to this Page
Can also be used as property: $page->filesManager
 
$page->filesPath()
stringReturns the path for files, creating it if it does not yet exist
Can also be used as property: $page->filesPath
 
$page->filesUrl()
stringReturns the URL for files, creating it if it does not yet exist
Can also be used as property: $page->filesUrl
 
$page->hasFiles()
boolDoes the page have a files path and one or more files present in it?
Can also be used as property: $page->hasFiles
 
$page->hasFilesPath()
boolDoes the page have a files path for storing files? 
$page->secureFiles()
bool nullDoes this Page use secure Pagefiles? 

Previous

Provides access to the previously set runtime value of some Page properties.

NameReturnSummary 
$page->namePrevious string null Previous name, if changed. Null or blank string if not.  
$page->parentPrevious Page null Previous parent, if parent was changed. Null if not.  
$page->statusPrevious int null Previous status, if status was changed. Null if not.  
$page->templatePrevious Template null Previous template, if template was changed. Null if not.  

Users

NameReturnSummary 
$page->createdUser User NullPage The user that created this page. Returns a User or a NullPage.  
$page->created_users_id int ID of created user.  
$page->modifiedUser User NullPage The user that last modified this page. Returns a User or a NullPage.  
$page->modified_users_id int ID of last modified user.  

Additional methods and properties

In addition to the methods and properties above, Page also inherits the methods and properties of these classes:

API reference based on ProcessWire core version 3.0.236

Latest news

  • ProcessWire Weekly #549
    In the 549th issue of ProcessWire Weekly we’re going to check out the latest core updates, highlight one older yet still very relevant third party module, and more. Read on!
    Weekly.pw / 17 November 2024
  • Custom Fields Module
    This week we look at a new ProFields module named Custom Fields. This module provides a way to rapidly build out ProcessWire fields that contain any number of subfields/properties within them.
    Blog / 30 August 2024
  • Subscribe to weekly ProcessWire news

“To Drupal, or to ProcessWire? The million dollar choice. We decided to make an early switch to PW. And in retrospect, ProcessWire was probably the best decision we made. Thanks are due to ProcessWire and the amazing system and set of modules that are in place.” —Unni Krishnan, Founder of PigtailPundits