Manual:Extensions

{| style="border: 2px solid #aaa; padding: 1em 2em; margin: 1em 0 2em 0; width:auto; margin:0 auto; float: " |

What are extensions?
Extensions let you customize how MediaWiki looks and works.

Wiki users can cat>Special:MyLanguage/Category:Extensions by category|browse through existing extensions or project>Project:Extension requests|request a new extension.

System administrators can 1>#Installing an extension|install (or remove) extensions on the MediaWiki installations that they manage.

Developers can man>Special:MyLanguage/Manual:Developing extensions|write new extensions or cat>Special:MyLanguage/Category:Not LTS ready|improve or maintain existing extensions.


 * style="textalign: center; valign: middle; padding: 0 2em" |

Search the extensions by keyword(s):


 * }

Depending on your goals you can use extensions to:


 * extend the wiki markup used to write articles - see  and  for examples.


 * add new reporting and administrative capabilities - see  for examples.


 * change the look and feel of MediaWiki - see Special:AllPages/Skin: and  for examples.


 * enhance security via custom authentication mechanisms - see </> for examples.

While some extensions are maintained by MediaWiki's developers, others were written by third-party developers.

As a result, many have bugs, and they are not all guaranteed to be compatible with each other.

Some are unmaintained; not all extensions work on all versions of MediaWiki.

Use any extension, especially those tagged as insecure, at your own risk.

When using an extension requiring patches to the core MediaWiki code or entries in your database(s), be sure to create a back-up of your database and/or the core MediaWiki code, to avoid the risk of permanently breaking your wiki.

Browsing extensions
You can browse <tvar|cat></> to see the full range of extensions that have already been written.

For information on installing these extensions or writing your own, see below.

Checking installed extensions
Only someone with administration access to the filesystem (and often the database too) on a server can install extensions for MediaWiki, but anyone can check which extensions are active on an instance of MediaWiki by accessing the <tvar|special>Special:Version</> page.

For example, these extensions are active in the English Wikipedia.

Installing an extension
MediaWiki is ready to accept extensions just after man>Special:MyLanguage/Manual:Installation</>|installation is finished.

To add an extension follow these steps:


 * 1)  Before you start 
 * Many extensions provide instructions designed for installation using unix commands. You require shell access (SSH) to enter these commands listed on the extension help pages.
 * 1)  Download your extension. 
 * special>Special:ExtensionDistributor</>|Extension Distributor helps you to select and download most of the popular extensions.
 * Extensions are usually distributed as modular packages. They generally go in their own subdirectory of <tvar|IP> </>.  A list of extensions stored in the Wikimedia gerrit>Special:MyLanguage/Gerrit</>|Git repository is located at <tvar|extensions>git:mediawiki/extensions</>.  Some extensions cat>Special:MyLanguage/Category:Extensions which host their code in-wiki</>|don't use version control and are not recommended.
 * Some extensions are also available in 1>Special:MyLanguage/Software bundles</>|bundles, <tvar|composer></> or 2>Special:MyLanguage/Comparison of extensions in distributions</>|package repositories.
 * 1)  Install your extension. .
 * Generally, at the end of the <tvar|LocalSettings> </> file (but above the PHP end-of-code delimiter, " ", if present), the following line should be added:
 * This line forces the PHP interpreter to read the extension file, and thereby make it accessible to MediaWiki.
 * Some extensions can conflict with maintenance scripts, for example if they directly access $_SERVER (not recommended).
 * In this case they can be wrapped in the conditional so maintenance scripts can still run.
 * In this case they can be wrapped in the conditional so maintenance scripts can still run.


 * The maintenance script <tvar|ImportDump></> will fail for any extension which requires customized namespaces which is included inside the conditional above such as <tvar|1></>, <tvar|2></>.



Upgrading an extension
Some extensions require to be updated whenever you update MediaWiki, while others work with multiple versions.

To upgrade to a new version of an extension:


 * 1) Download the new version of the extension


 * 1) Replace all the extension files in the  directory with the new files.  Do not remove the extension configuration present in LocalSettings.php


 * 1) Depending on the extension, you may have to run the Update.php maintenance script. Most extensions will mention if this script needs to be run or not.  (Perform backup of your data before executing the script).  If you don't have command line access, you can also use the man>Special:MyLanguage/Manual:Upgrading#Web_updater</>|web updater.

In most cases any extension configuration you have in LocalSettings.php will also work with the newer version of the extension.
 * 1) That's all you need to do.

Uninstalling an extension
Extensions are added by adding a line to LocalSettings.php, which basically looks like this:


 * 1) Remove this line and the extension is uninstalled. If you want to, you can (and if you do not want to use this extension in the future you should) remove the files of this extension inside the folder "extensions/".


 * 1) Maybe you also have some other lines in LocalSettings.php, which have to do with the extension you want to remove. Most likely this will be lines, which give certain users the right to access pages, which are provided by the extension.  These lines contain the variable "$wgGroupPermissions" and make some settings there.  As far as they have to do with rights, which come from the removed extension, you can remove these lines as well.

The updater maintenance/update.php removes them, when you run it, after you have uninstalled the extension.
 * 1) Maybe your extension also has added columns to your database.

Developing extensions
This complex topic is handled on the man>Special:MyLanguage/Manual:Developing extensions</>|developing extensions manual page.