Feather is super easy to install and setup, let's get started!


If you are dropping Feather into an existing website to use as a blog, simply rename the folder to whatever you'd like your blog to be called such as news or blog and this will then be accessible at https://example.com/news/ or https://example.com/blog/

If you are using Feather for your entire site, simply upload all of the contents from the Feather directory into your root, i.e: public_html, htdocs, www etc...

Your directory structure should look something like this:


An example .htaccess and nginx.conf are included, rename or copy the contents to your current file to use.

Ensure you set RewriteBase / in .htaccess or location / in nginx.conf to the location you installed Feather to, this is typically / for root directory installation.

Once uploaded, open includes/config.php and edit the configuration options at the top of the file to finish the setup. Any options you do not need, simply leave blank, do not delete!

Creating Content

Create your Markdown files in the relevant directories, posts/ and pages/.

These are simply text files with an .md extension and are made up of text, Markdown, and HTML content.

The slug is the filename without extension, for example, a file in pages named this-is-a-page.md would be accessible at https://example.com/this-is-a-page/.

When naming your files, ensure you use dashes - to separate words.

The files are split into 2 parts.

The first 5 lines is YAML Frontmatter style metadata, the second part is Markdown content.


title: The title
summary: The summary which is used in the meta tags, post excerpt and page intro
featured image: https://example.com/media/image.jpg
tags: optional, comma, separated, tags
accent: #bada55

Content can now begin...

Tags are used for posts only and the accent is only used if the active theme utilises it.

You can leave any metadata item empty if you don't require, but your main content must not start until line 6.

Next, simply add the rest of your content as normal.

If you are not familiar with Markdown, simply checkout the Markdown Cheatsheet

When creating pages, if you would like to create a page, but not have it show in the menu, simply leave title: blank.

You can then manually link to it anywhere either using Markdown or straight HTML, the choice is yours.


To install a new theme, simply drop the extracted folder into /themes/.

To tell Feather what theme to use, update the const Theme option in includes/config.php with the theme name.

The theme name is simply the folder name.

If the theme has any theme options, you can change those by editing includes/theme.php inside that theme directory.

For info on creating themes check out the Developer Docs


If you would like to translate Feather into a different language, you can, Feather core and all Feather themes and addons are translation ready!

Third-party themes and addons must add their own gettext support to be translation ready.

There are many ways to translate, and different software to help you, for this guide, we are using a Mac and PoEdit.

The easiest way to begin translating is simply place the entire Feather folder, including the core and all themes & addons on your Desktop.

Next, we're going to use the Mac Terminal.

Run the following command(s) to generate a .po file for all translatable strings in the application.

cd Desktop/feather
find . -name "*.php" >POTFILES 
xgettext -n --files-from=POTFILES

This will generate a file named messages.po inside the Feather directory.

We now need to open this file with PoEdit.

Once open, select the language you are translating to, then simply go through each string and translate into the language of your choice, once done, select File > Compile to MO from the PoEdit menu.

You will now have 2 files, messages.po and messages.mo.

We now need to create our translation directory inside Feather.

Navigate to the i18n directory, inside you need to create a new directory with your language & country code.

A locale name usually has the form ll_CC.

Here ll is an ISO 639 two-letter language code, and CC is an ISO 3166 two-letter country code.

For example, for German in Germany, ll is de, and CC is DE, so this would require a directory named de_DE.

See GNU Language Codes for your language code and GNU Country Codes for your country code.

Inside this directory create a final directory named LC_MESSAGES, and place your compiled.mo file inside.

Your directory structure will now look like this, with the exception of different language / country codes.


The final step is to tell Feather to use the language.

Simply open includes/config.php and set the i18n option, const i18n = "en_GB"; to your desired language.

For info on making themes and addons translation ready when developing, check out the Developer Docs

Search PRO

The search function is only available in Feather PRO.

To add the search form anywhere within a theme, simply include the form:

include( get_root_path() . "/searchform.php" );

Or if you've installed Feather in a sub-directory:

include( get_root_path() . "/sub-directory/searchform.php" );

It is the themes responsibility to display & style the in-page search form to match the theme styling.

If you do not want to display the in-page form, but would like to link to the actual search page, you can create a normal HTML link:

<a href="https://getfeather.app/search/" title="Search">Search</a>

Or a with Markdown link:


Addons PRO

Addons are only available in Feather PRO. They are snippets of HTML, CSS & JS and extend functionality.

To install an addon, simply drop the extracted file in the addons/ folder.

If the addon is valid, Feather will autoload the functionality provided.

If you would like to disable any addon, simply prefix the folder with . e.g: addon-name becomes .addon-name.

For more info on creating addons, check out the Developer Docs

That's all folks!


We use cookies to give you the best possible experience on our website and to analyse our traffic using Google Analytics. By clicking 'Accept', you agree that you are happy with this.  
Accept   Decline