Skip to the content.

Meta Optimizer

This plugin optimizes WordPress meta data storage by saving all meta data for each post, comment, user, or term in a single row with separate columns for each meta key. This reduces the number of rows and improves the query performance and data export. The plugin works seamlessly with WordPress core functions and hooks, and supports any plugins that use them. Some of the features of this plugin are:

Download

Download stable version from WordPress.org  

How to plugin works

Instead of storing each post, comment, user, term meta in a separate row, this plugin lets you store them all in one row, with each meta key as a column.

WordPress Meta Table Vs Meta Optimizer Table

 

Screenshots

Tables tab, You can manage meta table columns

Tables tab, You can manage meta table columns

Reset section in tables tab, You can reset Meta Optimizer DB tables and import again meta data.

Tables tab, You can manage meta table columns

Settings tab, Plugin options

Settings tab, Plugin options

Import tab, Import options

Import tab, Import options

Tools tab, Optimize WordPress functionality

Import tab, Import options

Optimizer tab, Optimize WordPress Database

Import tab, Import options

 

Plugin Hooks

Change import items number

add_filter( 'wpmetaoptimizer/import_items_number', function ( $importItemsNumber ) {
    // return numeric value
    return $importItemsNumber + 20;
} );

 

Attention

If you use reserved column keys such as post_id for post meta, the plugin adds a suffix to the meta key. It creates a column based on the renamed key. As an example, if you save meta with key post_id, then plugin adds _wpmork suffix and creates column post_id_wpmork. In response to a query (WP_Query), the plugin automatically changes the meta key if necessary.

 

Update post meta example

update_post_meta(1, 'post_id', 222);

The meta key has been changed to:

update_post_meta(1, 'post_id_wpmork', 222);

 

Example Query:

$query = new WP_Query(array(
    'orderby' => array(
        'post_id' => 'DESC'
    ),
    'meta_query' => array(
        'post_id' => array(
            'key' => 'post_id',
            'compare' => 'EXISTS',
            'type' => 'NUMERIC'
        )
    )
));

Plugin changed a query to this:

$query = new WP_Query(array(
    'orderby' => array(
        'post_id_wpmork' => 'DESC'
    ),
    'meta_query' => array(
        'post_id_wpmork' => array(
            'key' => 'post_id_wpmork',
            'compare' => 'EXISTS',
            'type' => 'NUMERIC'
        )
    )
));

 

Frequently Asked Questions

What type of meta types supported?

Meta Optimizer can save default WordPress meta types like Post / User / Comment / Term.

Can I use this plugin for custom post types?

Yes, of course. Even though the plugin supports the built-in types of post and page, it is well suited to storing meta data for custom post types.

Can I rename meta key in DB tables?

Yes, You can rename meta key in default WP tables and plugin tables.

 

Changelog

1.4

1.3

1.2.2

1.2.1

1.2

1.1

1.0

 

Unit Test

Currently, unit tests are limited to checking database tables and can’t check plugin functionality! If you are able to help write tests for the plugin, please submit a pull request. Thank you :)

  1. Initialize the testing environment locally
  2. Install Dependency: composer install
  3. Run Test: Windows ./vendor/bin/phpunit / Unix: vendor/bin/phpunit or phpunit

 

Production plugin

For create production plugin, run this command in plugin directory:

Unix: bin/create-plugin.sh Windows: .\bin\create-plugin.sh

 

Documents

Documents page