Extension:WikiSEO
WikiSEO Release status: stable |
|
---|---|
Implementation | Parser function |
Description | Allows to add common meta elements as part of Search Engine Optimization (SEO) |
Author(s) | Octfxtalk |
Latest version | 2.6.3 (2021-01-14) |
MediaWiki | 1.35+ |
PHP | 7.2+ |
Composer | octfx/wiki-seo |
License | GNU General Public License 2.0 or later |
Download | GitHub: Note: |
|
|
Translate the WikiSEO extension if it is available at translatewiki.net | |
The WikiSEO extension allows you to replace, append or prepend the HTML title tag content. It also allows you to add common SEO (Search Engine Optimization) meta elements such as "keywords" and "description".
A working JobQueue is absolutely required for this extension to function.
Installation[edit]
- Download, extract and place the file(s) in a directory called
WikiSEO
in yourextensions/
folder. - Add the following code at the bottom of your LocalSettings.php:
wfLoadExtension( 'WikiSEO' );
- Configure as required.
Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Usage[edit]
The extension can be used via the {{#seo}}
parser function or in Lua modules by using mw.ext.seo.set()
. It accepts the following named parameters in any order.
title
- The title you want to appear in the html title tag
title_mode
- Set to append, prepend, or replace (default) to define how the title will be amended.
title_separator
- The separator in case titlemode was set to append or prepend; " - " (default)
keywords
- A comma separated list of keywords for the meta keywords tag
description
- A text description for the meta description tag
robots
- Controls the behavior of search engine crawling and indexing
googlebot
- Controls the behavior of the google crawler
hreflang_xx-xx
- Adds
<link rel="alternate" href="url" hreflang="xx-xx">
elements
type
- The type of your object, e.g., "video.movie". Depending on the type you specify, other properties may also be required.
image
- An image URL which should represent your object within the graph.
The extension will automatically add the right image url, width and height if an image name is set as the parameter. Exampleimage = Local_file_to_use.png
.
Alternatively a full url to an image can be used,image_width
andimage_height
will then have to be set manually.
If no parameter is set, the extension will use$wgLogo
as a fallback or the local file set through$wgWikiSeoDefaultImage
.
image_width
- The image width in px. (Automatically set if an image name is set in
image
)
image_height
- The image height in px. (Automatically set if an image name is set in
image
)
image_alt
- Alternative description for the image.
locale
- The locale these tags are marked up in. Of the format language_TERRITORY.
site_name
- If your object is part of a larger web site, the name which should be displayed for the overall site. e.g., "IMDb".
- tags related to Open Graph type "article" [3]
author
- Writers of the article.
keywords
- Translates into
article:tag
section
- A high-level section name. E.g. Technology
published_time
- When the article was first published. ISO 8601 Format.
- tags related to Twitter Cards (see OpenGraph Tags)[4]
twitter_site
- If you did not set a global site name through
$wgTwitterSiteHandle
, you can set a site handle per page. If a global site handle is set this key will be ignored.
Examples[edit]
Adding static values[edit]
{{#seo: |title=Your page title |title_mode=append |keywords=these,are,your,keywords |description=Your meta description |image=Uploaded_file.png |image_alt=Wiki Logo }}
Adding dynamic values[edit]
If you need to include variables or templates you should use the parser function to ensure they are properly parsed. This allows you to use Cargo or Semantic MediaWiki, with Page Forms, for data entry, or for programmatic creation of a page title from existing variables or content...
{{#seo: |title={{#if: {{{page_title|}}} | {{{page_title}}} | Welcome to WikiSEO}} |title_mode={{{title_mode|}}} |keywords={{{keywords|}}} |description={{{description|}}} |published_time={{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}} }}
{{#seo: |title_mode=append |title=Example SEO Wiki |keywords=WikiSEO, SEO, MediaWiki |description=An example description for this wiki |image=Wiki_Logo.png |image_alt=Wiki Logo |site_name=Example SEO Wiki |locale=en_EN |type=website |modified_time={{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}} |published_time=2020-11-01 }}
Usage in lua modules[edit]
-- Module:SEO local seo = {} --[[ argTable format: { title_mode = 'append', title = 'Example Seo Wiki', keywords = 'WikiSEO, SEO, MediaWiki', -- ... } ]]-- function seo.set( argTable ) mw.ext.seo.set( argTable ) end function seo.setStatic() mw.ext.seo.set{ title_mode = 'append', title = 'Example Seo Wiki', keywords = 'WikiSEO, SEO, MediaWiki', } end return seo
The module would now be callable as {{#invoke:SEO|set|title=ExampleTitle|keywords=WikiSEO, SEO, MediaWiki}}
or {{#invoke:SEO|setStatic}}
.
Hreflang Attributes[edit]
{{#seo: |hreflang_de-de=https://example.de/page |hreflang_nl-nl=https://example.nl/page-nl |hreflang_en-us=https://website.com/ }}
Will generate the following `<link>` elements:
<link rel="alternate" href="https://example.de/page" hreflang="de-de"> <link rel="alternate" href="https://example.nl/page-nl" hreflang="nl-nl"> <link rel="alternate" href="https://website.com/" hreflang="en-us">
Title Modes[edit]
Example: Page with title Example Page
Append[edit]
{{#seo: |title_mode=append |title=Appended Title }}
HTML Title result: Example Page - Appended Title
Prepend[edit]
{{#seo: |title_mode=prepend |title=Prepended Title }}
HTML Title result: Prepended Title - Example Page
Prepend (changed separator)[edit]
{{#seo: |title_mode=prepend |title=Prepended Title |title_separator= >> }}
HTML Title result: Prepended Title >> Example Page
Replace (default)[edit]
{{#seo: |title_mode=replace |title=Replaced Title }}
HTML Title result: Replaced Title
Configuration[edit]
The following variables are in use by this extension.
$wgWikiSeoDefaultImage
[edit]
Set a default image to use if no image is set on the site. If this variable is not set the site's logo will be used.
Usage: $wgWikiSeoDefaultImage= 'Localfile.jpg';
.
$wgGoogleSiteVerificationKey
[edit]
Setting this variable will add a <meta name="google-site-verification" content="CODE">
tag to every page.
Usage: $wgGoogleSiteVerificationKey = 'CODE';
. See [5] for more information.
$wgBingSiteVerificationKey
[edit]
Setting this variable will add a <meta name="msvalidate.01" content="CODE">
tag to every page.
Usage: $wgBingSiteVerificationKey= 'CODE';
. See [6] for more information.
$wgFacebookAppID
[edit]
Setting this variable will add a <meta property="fb:app_id" content="ID">
tag to every page.
Usage: $wgFacebookAppID= 'App_ID';
.
$wgFacebookAdmins
[edit]
Setting this variable will add a <meta property="fb:admins" content="ID1,ID2,...">
tag to every page.
Usage: $wgFacebookAdmins= 'ID1,ID2,...';
.
$wgYandexSiteVerificationKey
[edit]
Setting this variable will add a <meta name="yandex-verification" content="CODE">
tag to every page.
Usage: $wgYandexSiteVerificationKey= 'CODE';
. See [7] for more information.
$wgAlexaSiteVerificationKey
[edit]
Setting this variable will add a <meta name="alexaVerifyID" content="CODE">
tag to every page.
Usage: $wgAlexaSiteVerificationKey= 'CODE';
. See [8] for more information.
$wgPinterestSiteVerificationKey
[edit]
Setting this variable will add a <meta name="p:domain_verify" content="CODE">
tag to every page.
Usage: $wgPinterestSiteVerificationKey= 'CODE';
. See [9] for more information.
$wgNortonSiteVerificationKey
[edit]
Setting this variable will add a <meta name="norton-safeweb-site-verification" content="CODE">
tag to every page.
Usage: $wgNortonSiteVerificationKey= 'CODE';
. See [10] for more information.
$wgTwitterSiteHandle
[edit]
Only used when Twitter generator is loaded.
Setting this variable will add a <meta property="twitter:site" content="@SITE_HANDLE">
tag to every page.
Usage: $wgTwitterSiteHandle = '@SITE_HANDLE';
.
$wgMetadataGenerators
[edit]
Array containing the metadata generator names to load.
Default: ["OpenGraph", "Twitter", "SchemaOrg"]
.
If you only want to change the page title and add 'description', 'keywords', 'robots' tags set $wgMetadataGenerators = [];
$wgWikiSeoDefaultImage
[edit]
Default image. Local image, if not set $wgLogo will be used.
$wgWikiSeoDisableLogoFallbackImage
[edit]
Disable setting $wgLogo as a fallback image if no image for a page was set.
$wgTwitterCardType
[edit]
Defaults to `summary_large_image` for the twitter card type.
Usage: $wgTwitterCardType = 'summary';
$wgWikiSeoNoindexPageTitles
[edit]
An array of page titles where a 'noindex' robot tag should be added. Usage: $wgWikiSeoNoindexPageTitles = [ 'Custom_Title', 'Main_Page' ];
$wgWikiSeoDefaultLanguage
[edit]
A default language code with area to generate a `<link rel="alternate" href="current Url" hreflang="xx-xx">` for.
Usage: $wgWikiSeoDefaultLanguage = 'de-de';
Migrating from v1.2.2 to to v2.x[edit]
Removed tags[edit]
- DC.date.created
- DC.date.issued
- name
- og:title (automatically set)
- og:url (automatically set)
- twitter:card (automatically set)
- twitter:creator
- twitter:domain
- article:modified_time / og:updated_time (automatically set)
Removed aliases[edit]
- metakeywords / metak
- use keywords instead
- metadescription / metad
- use description instead
- titlemode / title mode
- use title_mode instead
Changed argument names[edit]
- article:author -> author
- article:section -> section
- article:tag -> keywords
- article:published_time -> published_time
- og:image / twitter:image:src -> image
- og:image:width -> image_width
- og:image:height -> image_height
- og:locale -> locale
- og:site_name -> site_name
- og:title -> title
- og:type -> type
- twitter:description -> description
Known Issues[edit]
Extension:PageImages will add an og:image
tag if an image is found on the page. This overwrites any og:image
tag set using this extension.
There is currently no way to disable PageImages setting the meta tag.
Notes[edit]
This extension is not a drop-in replacement for the previous version of this extension from tinymighty/wiki-seo.
If you only want to override the display title on pages (not append words to it), you might also look at the DISPLAYTITLE tag in combination with the Manual:$wgAllowDisplayTitle and Manual:$wgRestrictDisplayTitle settings.
schema.org[edit]
The SchemaOrg
generator will set a SearchAction property based on Special:Search.[11]
The properties publisher and author will be set to Organization
with the name set to the content of $wgSitename
.
dateModified
will be automatically set by fetching the latest revision timestamp. If no published_time
is set, datePublished
will be set to the latest revision timestamp.
OpenGraph[edit]
article:modified_time
will be automatically set by fetching the latest revision timestamp. If no published_time
is set, article:published_time
will be set to the latest revision timestamp.
Integration[edit]
WikiSEO will use descriptions provided by Extension:Description2.
- ↑ The Open Graph protocol
- ↑ Open Graph Overview
- ↑ Open Graph type "article"
- ↑ Twitter Cards
- ↑ Google - Verification: Meta tag
- ↑ Bing - Verify Ownership of Your Website
- ↑ Yandex.Webmaster
- ↑ Alexa - How do I get my site’s metrics Certified?
- ↑ Pinterest - Claim your Website
- ↑ Norton - Safe Web
- ↑ SearchAction
- Stable extensions
- Parser function extensions
- Extensions supporting Composer
- GPL licensed extensions
- Extensions in Wikimedia version control
- Extensions in GitHub version control
- BeforePageDisplay extensions
- ParserFirstCallInit extensions
- ScribuntoExternalLibraries extensions
- All extensions
- HTML head extensions
- Search engine optimization extensions