For support go to the Forums.

Ad-minister is a plugin that adds a easy to use WordPress management system for adverts and other static content. It supports ad-rotation (with content having different page-view percentages), schedueling (including multiple time periods) and is fully widget compatible.

Download the plugin from

Go here for a painless quick-start guide on how to use Ad-minister.

Attention! The information below is out of date with the current version – I’m working on updating it…

Table of contents



This plugin is geared towards the generation of revenue for websites by enabling the ease of hadling advertising. It is free, but if you feel that you’ve made enough money to contribute to this project, then please do. Your contibution will enable future developments of this plugin.

Definition of terms

A position is a location on your WordPress blog, and it is where the ‘content’ shows up – acting as a container for content. Positions can either be defined in your templates, or can be added to a sidebar as theme Widgets (In Presentation->Widgets).
Any piece of content that is to be displayed at a position. Could be anything really – examples may include:

  • banner ads
  • Goolge ads JavaScript
  • Tradedoubler links, but not related to the content of a page/post
  • banners advertising internal content or specials
  • graphics or text that you want to change once in a while


Any content is held inside of positions, where a position is a pre-defined place in a template, or a theme widget. If multiple contents are placed in the same position, then the position will randomize which content is shown. If no ‘weight’ is associated with the content, then each piece of content contained within that position will be as likely to show up upon a page-view as any other. This behavior can be modified with a ‘weight’ parameter, which specifies the relative statistical weight of a piece of content.

Installation procedure

  1. Upload the ‘ad-minister’ folder to the ‘/wp-content/plugins/’ directory
  2. Activate the plugin through the ‘Plugins’ menu in the WordPress admin
  3. If a template have pre-installed advert positions, then they will appear under the ‘Positions’ tab in the ‘Template positions’ section. Widget positions can be created here, and once created, they will show up in Design->Widgets, where they can be dragged onto a sidebar.
  4. Create adverts/content under the ‘Create content’ tab. Here you can enter the html code and also upload files, in the same manner files are uploaded for a post/page.

The ‘Settings’ tab

The page looks something like this:

Ad-minister: Settings Tab

On the Settings tab there are several options:

  • Ad-minister post/page piggyback ID – this is the ID that Ad-minister attaches its positions and content to.
  • Dashboard – Ad-minister can notify of upcoming activation or expiration of content that is scheduled. This can be turned of, and the time period (in days) that Ad-minister looks forward can be customized.
  • Theme widgets – if this option is un-checked then no theme widgets will be created.
  • User level access – This option determines the user level required to access Ad-minister under Options->Ad-minister. Note that if you change this the level to one that is higher than the one your user has, you will no longer be able to access Ad-minister.
  • XML Export – creates an XML export file for Ad-minister.

The ‘Positions’ tab

The positions tab looks like this:

Ad-ministerPosition Tab

On this page you can create widget positions – to do this click on ‘Add a new widget position’, field will then pop up, where you can enter the following parameters:

  • Name – The name of a position identifies it and must be unique.
  • Description – A description of the position, this is never shown anywhere else than in the admin.
  • Before – This is html code that is to preceed the content that is placed in the position, e.g. ‘<div class=”ad”>’
  • After – The html code to follow the position, e.g. ‘</div>’

For each of the widget positions that is created, a theme widget is also automatically created, so that each position can be dragged into the sidebar (at Presentation->Wigets). They are shown with a prefix of ‘Ad: ‘ followed by the key of the position. Using widgets you can position your content without having to edit any template code. This requires, of course, that your theme is widget compatible.

Note that if you change the name of the key of a position, WordPress will think it is dealing with a completely new widget, and will remove it from the sidebar, back down into the ‘Available Widgets’ section.

Adding adverts without touching any code whatsoever

Since widget positions can be dynamically created under the Positions tab, and then dragged onto a Sidebar in Presentation->Widgets, one can start creating content for this position without touching any code at all. Pretty cool, huh? Once the position has been crated, content is added to it under the ‘Create Content’ tab.

Adding positions to your template

To create a positition named ‘Top Banner’ wrapped in a div, the folling code is placed where the banner is to appear in the template (probably header.php):

 'Top banner', 'description' => 'This is the banner on top of every page', 'before' => '
  do_action('ad-minister', $args);

The minimum amount of code required to create a position is:

 'Top banner'));

The ‘Create content’ tab

The ‘Create content’ tab looks like this:

Ad-minister: Create content Tab

Each of the fields are discussed below.


Add ad title to your content as to identify it easily, e.g. ‘Tradedoubler – Apple iPod Nano’. This title will never be visible to a visitor to your WordPress blog, but will easy your organization. In addition, if you have set a scheduele for this content, this title will show up in the Dashboard when it is due to become active, or due to expire.

Html code

Here goes the code that is the content. Clicking the preview button will preview the code. Note that any javascript or css will not execute in the Preview. Also, you might want to consider making the code XHTML compliant.

You can add files to your content by uploading in the ‘Add/Manage Files’ box at the bottom of the page. Here, you can also browser the already uploaded files. To add a file, click ‘Send to Editor’, and the image html code will appear in the ‘Html code’ field.


In the schedule field you can specify a time-period for which the content is valid, and will be only be displayed through the template function during that period.

E.g. if you want something to be valid between the 1st of April 2007 and the 1st oF January 2008, enter ’2007-04-01:2008-01-01′ as the schedule. The dates are entered in ISO standard. Multiple periods are separated by commas.


The weight is a parameter that determines what percentage of page-views a piece of content gets. This only applies to positions that contains more than one bit of contents. The probability of a piece of content, i, being shown, when tied to a particular position is given mathematically by:

Weight Equation

This states that the probably of some content being shown equals to the weight of that content divided by the sum of all the weights sharing that position. If the weight is left as ‘Automatic’, then the weight is assumed to be 1 (one). This means that every (shown) content is as likely to be shown as the rest for that position. Thus, the weight can be used to change the fraction of pageviews that a particular ad/content gets.

For example, if a position contains content ‘A’ and ‘B’, with the weight of ‘A’ being set to automatic, and the weight of ‘B’ set to 3, then the probability of content A to be shown is 25% (1/(1+3)), or, in other words, content ‘A’ will be shown one out of four times.


The position is simply where the content will appear. To administer the positions go to the ‘Positions’ tab.

You can choose to create orphaned content by setting the position to ‘- (orphan)’. This means that the content is not associated with a position, and thus will not show up anywhere. You can change the position of any content in the ‘Content’ tab.

Make wisible?

You can create invisible content, that will not be shown on our website. The default is to create visible content.

Use wrapper?

You can choose not to user the wrapper of a position. To see what wrapper a position has, go to the ‘Positions’ tab. The default is to wrap the content.

Adding files

Files, such as images or Flash files, can be added using the File browser at the bottom of the ‘Add content’ page. Click the ‘Upload’ tab to upload. Click ‘Browse’, to browse the files that are specifically associated with AdMinister. ‘Browse All’ will show all the files that WordPress has uploaded, so that you can use files uploaded to other posts or pages.

The ‘Content’ tab

Once content has been added in the ‘Create content’ tab, you can see your content here. The content is grouped by position and is collapsed by default. To see the content of a particular position, click ‘Show/Hide’.

You can edit the positions here. Note that the page does not re-load when content is saved. When saved is pressed a small rotating arrow will appear on the right hand side – when this disappears the content has been saved.

Orphaned content

When a position is removed, that content that was attached to it will be come ‘orphaned’. This content can be attached to another position, or deleted.

Language support

This plugin does support translations.

Displaying statististics on pages

You might want to give your advertisers access to the statistics of their adverts without giving them access to ‘wp-admin’. One could, in such an instance, create a password created page with a template containing the Ad-minister template function for such a table. You have the option of excluding any column you don’t wan’t the advertiser to see, and the option of showing only a selection of ads.

The administer_template_stats takes an optional $options parameter, which is an associative array, which contain some or all of these parameters:

  • ‘id’ – an array containing the ID of the ads to show in the table, each ad will correspond to one row.
  • ‘columns’ – an array containing the names of the coluns to show. The following are available:
    • id
    • title
    • position
    • visible
    • time
    • impressions
    • clicks


Say you want to give access to the statistics to an advertiser, who has three ads you your website with ids 1, 2 and 3, and you want to show him/her how many impressions the ad has gotten.

In your template you’d put the following:


The Ad-minister plugin is relased under GPL, which reads as follows:

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with this program. If not, see

More Fields

We’ve pushed another update for More Fields 2.x.

We’ve tried solving the issue with quotes in field and box names before, but our efforts have been unsuccessful with double escaping characters as a result. Sorry about any problems this has caused.

2.0.4 solved the bigger problem where we had a problem with quote signs in the content, but now we’ve solved the problem with ‘ and ” in box and field titles as well by reverting to our old method of storing arrays in forms (with JSON).


  • Resolved issues with quotes in field and box names
  • Sputnik v6 – brought back json implementation, instead of serialize() when storing arrays in forms.

Quick update. In some cases editing the a field box the box could clear the box from it’s content. We’re working on a real solution (since this one, again, can create problems with quote marks in the box title). This is only a problem for the box titles though, not for field titles.

More Fields 2.0.4

We have pushed an update for More Fields 2.0.4 to the WordPress repository.

The changelog is as follows:

  • GUI fix for checkboxes that slipped out of the admin box
  • Fixed error with unescaped quote marks.
  • Checkbox implementation changed. Checked checkbox has value 1 (true), unchecked checkbox has no value.
  • Fix för file list labels
  • Sputnik v5

This addresses bug reports: #1, #2.

Sorry, but now we double escaped double quotes instead. Fixed in

More Downloads

We thought we’d share some statistics for you since we’ve launched the new site and all.

This week (or perhaps the week before) the total sum of downloads of our plugins reached over 100 000. We’re mighty proud and want to thank all of you for using them. Without you all our work would really be for nothing.

Plugin Downloads
Summa 102 813
Ad-Minister 32 529
More Fields 61 759
More Taxonomies 1 567
More Types 3 051
Post Links 3 090
WP-Ad-Manager (fork of Ad-Minister) 817

We’re at position 177 on the Top 1000 WordPress Plugin Author list.

New site for our plugins

You’re looking at the completely revamped site for our plugins.

We’re still not done, but we wanted to launch since we killed our old site a couple of weeks ago to force us to complete this one.

We’d like to thank Jesse Sutherland for the single biggest donation yet to our work with these plugins. Jesse contributed a lot of design work for the new site and we’re eternally grateful for it.

More Fields 2.0.3

We updated More Fields to 2.0.3 yesterday.

The most wanted fixes seemed like the file list fields and pagination for custom field lists. And we think we got them squashed.

The Changelog is updated accordingly:

  • Regained file list functionality with proper admin-ajax
  • Bug fix for template functions
  • Problem with listings based on Custom Fields fixed
  • Fixed More Fields breaking some plugins

Test 2.0.3 out and mark your support threads as resolved if you think they are and give us praise. ;)

Resetting the More plugins

Some users have asked for a way to reset the More plugins to its default state to start over. And I thought I’d let you know how it’s done.

In More Fields, More Taxonomies and More Types there is a line in the plugin php file that looks like this:

if (0) update_option('more_nn', array());

where nn is fields, types or taxonomies respectively.

Open the file and change that line to:

if (1) update_option('more_nn', array());

Load the settings page for that plugin (Settings » More nn).

Then change that same line back to

if (0) update_option('more_nn', array());

This should revert all settings of that plugin back to null.

Please note

This is a hard reset of the plugin data. There is no undo. Use with caution. (And do backup before you start playing with it.)

More Fields 2.0.1 and More Types 1.0.1

We got the flyswatter out and are smashing a couple of bugs right out of the gates.

More Fields 2.0 issue:

  • WYSIWIG and content not showing up (Report 1, Report 2)
  • implode error reported by some users (Report 1, Report 2). This was caused by changes between the implementation of json_decode between PHP 5.2.x and 5.3.x. We’re no longer using json (while remaining big fans), as it requires PHP5.
  • WYSIWIG overflow when window is small.

More Types 1.0 issue:

  • Featured image missing from created types (Report 1)
  • Weird UTF8 text was saved as even weirder text (Report 1)
  • Text labels other than singular & plural were not saved properly (Report 1)

We will be pushing the point update shortly, until then look for release candidates in Other versions.

(This post will be updated until release.) More Fields 2.0.1 and More Types 1.0.1 were just committed to the repository. Try them out and let us know what you think!

The Sputnik Release

Get your tickets for the Sputnik release of our suite of More plugins all working and tested with WordPress 3.0.1.

More Fields 2.0

More Fields is our most downloaded WordPress plugin with over 50 000 downloads from the WordPress repository.

It adds boxes to the Write/Edit page in the admin for easy management of more types of content. These boxes contains input fields, so that additional (more) fields can be added to a post. For example, if you write about books, you can add a box where you can enter title and author, isbn, etc. The boxes can be placed either to the right or to the left on the Write/Edit page.

This finally makes Custom fields usable.

More Types 1.0

More Types is a WordPress plugin that allows you to add new post types to the WordPress admin, besides Posts and Pages. For instance if you run a music site you could create a review post type (based on post). If you run a food blog you could create a post type for recipes.

This allows for a simpler admin for your users, and better structure for you.

More Types also allows you to override the default post types, set user capabilities for specific post types and more.

More Taxonomies 1.0

More Taxonomies allows you to add new taxonomies to the WordPress admin. For instance if you run a football site you could create a team taxonomy (non-hierarchical, like tags) and set teams on your posts relating to a specific game. If you run a music blog you could create taxonomies for artists, musicians or perhaps producers. This way you could be more specific in your posts and allow for specific pages for items in your created taxonomy.

This way you can structure your posts in new and creative ways. You can use your new taxonomies together with the old tags and categories.

More Taxonomies also allows you to override the default taxonomies, set user capabilities for a specific post type and more.

More Plugins Suite

If you use more than one of the plugins they interact beautifully (we hope you’ll think). You could for instance allow for a specific More Fields box to appear on just a specific Post type created with More Types. You could set a specific taxonomy to be used with just a specific Post type. You could even create new types of More Fields fields that interacts with a Taxonomy created with More Taxonomies.

More or less

Allthough we think all of our plugins are great, you can use any of our plugins stand alone. They work great by themselves (but they feel a bit lonely).

Sputnik what?

Sputnik is the version label for the common php object that handles taskas that are common to the More Plugins. It handles data/editing/deleting and builds the Settings pages for the plugins among other boring stuff. It’s really just a g33k thing that glues things together, that you really wouldn’t notice when using the plugins, unless we told you about it, which we just did. Anyway, we like it.


Look for support in the forum (we’re not able to track bugs here among the comments). But if you’d like to share some use cases or praise us that’s fine in the comments … ;)

More Fields 50k

We’re extremely proud to announce that last night More Fields passed the 50 000 downloads mark. Thank you for using our plugin that started with just something we needed ourselves when we converted one of Swedens largest music sites,, from a homebrewed ASP CMS to WordPress.

I know we keep teasing, but the launch of Sputnik (More Fields 2.0, More Types 1.0 & More Taxonomies 1.0) is getting real close now.

And we are happy to report that we have received our single biggest donation yet from Jesse Sutherland who has created a custom theme for a new home for our plugin suite. Soon this site will relocate to its new home.

Upgrading More Fields

I thought I’d try to clear up a few things about upgrading More Fields from 1.x to 2.x.

What’s happening?

We’ve restructured the data model for More Fields to be compatible with WordPress 3.0. To use Boxes, Fields and Post types created with More Fields 1.x in WordPress 3.0 you need to upgrade them.

Upgrading the easy way

The easiest way to upgrade to the upcoming More Fields 2.0 release is to stay in WordPress 2.x and upgrade to More Fields 1.5.2. That will prepare the Boxes, Fields and Post types for WordPress 3.0. (Please note that More Fields 1.5.2 itself is not entirely compatible with WordPress 3.0.)

  1. Upgrade to WordPress 2.9.2
  2. Upgrade to More Fields 1.5.2
  3. Wait for release of More Fields 2.0
  4. Upgrade to WordPress 3.0.x
  5. Upgrade to More Fields 2.0
  6. Install and activate More Types 1.0

Upgrading the other way

If you’ve been eager for the new features of WordPress 3.0 you probably have already upgraded. If you still use More Fields 1.x, upgrade to More Fields 1.5.2 and then to the latest release candidate of More Fields 2.0.

If you have problems upgrading from WordPress 3.0 and More Fields 1.5.x, or have already started using a beta version of More Fields 2.0, you need to upgrade your settings:

  1. Using WordPress 3.0
  2. Download More Fields Upgrade
  3. Upload /more-fields-upgrade.php to /wp-content/plugins/
  4. Activate More Fields Upgrade
  5. The upgrade is made automatically
  6. Deactivate More Fields Upgrade
  7. Upgrade to More Fields 2.0

In the unlikely event of errors

If you feel confident getting into the code and if everything still goes to hell in a handbasket you can manually reset More Fields, in /more-fields/more-fields.php changing 0 to 1 on line 32, load the Settings->More Fields page and change it back again.


Download link fixed. (Sorry.)