Available from version 1.6.0
Called just before the preview and edit form are rendered
Define function:
public static function onEditPage_showEditForm_initial( EditPage $editPage, OutputPage $output ) { ... }
Attach hook: In extension.json:
	"Hooks": {
		"EditPage::showEditForm:initial": "MediaWiki\\Extension\\MyExtension\\Hooks::onEditPageshowEditForminitial"
Called from: File(s): EditPage.php
Interface: EditPage__showEditForm_initialHook.php

For more information about attaching hooks, see Manual:Hooks .
For examples of extensions using this hook, see Category:EditPage::showEditForm:initial extensions.


  • $editPage: the current EditPage object.
  • $output: the OutputPage object (added in version 1.20.0).


You can do something like:

if( $editPage->formtype == 'preview' ) {
    // performing a preview.

to only take action on certain types of edits.

Inject HTML[edit]

There are many locations within EditPage::showEditForm:initial that allow a user to inject HTML. These hook locations are represented by member variables of the EditPage object. (Note that it is not clear how you are able to inject text using this hook prior to MW 1.9!)

$editPage->editFormPageTop                 // MW >= 1.9
$editPage->editFormTextTop                 // MW >= 1.9
$editPage->editFormTextBeforeContent       // MW >= 1.12
$editPage->editFormTextAfterWarn           // MW >= 1.9
$editPage->editFormTextAfterTools          // MW >= 1.9
$editPage->editFormTextBottom              // MW >= 1.9	

To inject your HTML, append your HTML to one of the aforementioned member variables, e.g.

$editPage->editFormPageTop .= "<span>Hello World!</span>";

Some hook locations are inside forms; some not. Those inside the form allow you to inject HTML form elements.

  • Inside form
    • editFormTextBeforeContent
    • editFormTextAfterWarn
    • editFormTextAfterTools
    • editFormTextBottom
  • Outside form
    • editFormPageTop
    • editFormTextTop

Normally, we use EditPage::showEditForm:fields for form elements, but there may be some circumstances for which it is necessary to use the aforementioned hook locations.


In readonly mode, there is a similar EditPage::showReadOnlyForm:initial-hook