Frequently Asked Questions (FAQ)

What is the development status of this plugin?

Add-Headers has been deprecated. It is no longer supported. It is no longer tested with new WordPress releases. Using it in production is not recommended.

It is strongly suggested to migrate to other more modern and better maintained plugins.

At the time of writing, there are no major bugs. Provided that the WordPress API does not change soon, you have the time to experiment with other plugins and plan your migration.

I have a question/idea about the plugin! Can I contact you?

Please, don't. All inquiries about Add-Headers are silently discarded. I no longer provide support and, also, I'm not interested in any idea or proposal.

The source code of the plugin is released under a permissive open source license. You may use the source code according to the licensing terms.

I found the source code of this plugin on a third party web site. Should I trust it?

Please understand, that, due to the nature of Free Open Source Software, the source code of any such project may be freely distributed from any web site on the internet. Obviously, you should never trust source code you find on third party web sites. Please check the Downloads page for more information about downloading the source code.

What does the Add-Headers plugin do?

Add-Headers is an open source plugin for the WordPress Publishing Platform that adds the ETag, Last-Modified, Expires and Cache-Control headers to the HTTP responses generated by WordPress for more efficient caching.

Does this plugin add these HTTP headers in responses to requests for images, CSS, javascript and other static files?

No, the plugin adds the aforementioned HTTP headers only to responses generated by WordPress. This includes all dynamic pages, but not static files like images, CSS or javascript files. The responses for those files are actually generated by the web server and WordPress has no involvement, and thus Add-Headers cannot process the HTTP headers of the responses when such static resources are requested.

Please consult your web server's documentation about how to add all these headers in the HTTP responses for static files.

What is the target audience of this plugin?

The target audience of the Add-Headers plugin is WordPress users who have a good general understanding about how HTTP caching works and about the special needs of their web site regarding caching.

What knowledge is required before being able to understand what this plugin is doing?

Before using this plugin or requesting support, it is essential that you have a good general understanding of the following terms:

  • HTTP protocol
  • HTTP request/response
  • HTTP header
  • Web Browser Cache
  • Caching proxy server
  • Cache-control header
  • ETag header
  • Last-Modified header
  • Expires header
  • Web/HTTP Cache

Moreover, it is essential to know how to check the HTTP response headers, as returned by the web server, to which you have sent the HTTP request. Please note this is the only way to tell if the plugin is working as expected on your platform.

Being able to edit a PHP file, such as the functions.php file of your theme, is necessary in case you need to configure the plugin in a custom way.

Last but not least, it is mandatory to know how to check your web server's error log.

If you lack in any of the above things, please do not use this plugin and, please, do not rate it. Add-Headers is not the right plugin for you.

Does this plugin just work?

Yes. Despite all the mandatory requirements in knowledge, this plugin has been designed to just work. The default options have sensible default values and all the supported HTTP headers are generated by the plugin. However, since v2.0.0 caching is not enabled by default. Please check the configuration page for more information.

If it just works, why do I still have to meet the requirements in knowledge?

The fact that the plugin has been designed to just work does not mean that you are getting any guarantee that it is actually going to work on your platform. Please note that the plugin has been tested on a clean WordPress installation using the most modern default theme.

In order to be able to check whether the plugin is working fine on your platform or not, meeting the mandatory requirements in knowledge, as listed above, is absolutely necessary. If this is not the case, this plugin is not for you, even if it just works.

Besides, if your web site contains special web pages, like contact forms and shopping carts, you will need to configure the plugin according to your web site's special needs, which makes meeting the requirements in knowledge absolutely necessary.

I cannot find the settings page!

This is because there isn't a settings page in the WordPress administration panel. However, the plugin can be configured by adding a small code snippet in the functions.php file of the theme or in a custom plugin.

There are no plans to implement a settings page in future releases. This happens because we need a great amount of flexibility which cannot be offered by a web based user interface. Nevertheless, configuration requires very basic coding skills. Please check the description page for copy-paste ready sample code and also more details about the available settings.

How do I know if the plugin is working? It does not notify me in any way!

By design, this plugin won't notify you about anything. You will have to check the actual HTTP response headers. Knowing how to do it is a mandatory requirement and is beyond the scope of the support that can be provided to you by the plugin author. However, you can easily find relevant tutorials and online or offline tools to help you with this.

Some examples about how to use curl in order to check the HTTP response headers exist in the Testing page.

How can I customize the options or the plugin functionality?

The plugin options can be customized by adding a small code snippet in the functions.php file of your theme. Moreover, the plugin functionality can be further customized by attaching filtering functions to the available filter hooks.

I've activated your plugin and my contact form and shopping cart do not seem to work!

If the cache_max_age_seconds option has been set to N seconds, then all pages are allowed to be cached for N seconds. Consequently, special web pages that might contain elements which must be refreshed on every visit, like captchas and shopping carts, are not going to work correctly. For those pages, cache_max_age_seconds is required to be set to zero, so as to prevent them from being cached by caching proxies and web browsers. Please, make sure you check out the configuration examples.

I get a PHP warning: 'Cannot modify header information - headers already sent'

This warning does not occur due to a programming error in the Add-Headers code. It happens because output buffering gets closed by another plugin or other custom code before Add-Headers sents the HTTP headers to the client.

It is impossible to guess what part of your 3rd party code causes this problem. It depends on other plugins you use or other custom code. Thorough investigation of the warning messages that have been recorded in the web server's error log is required.

Start by reading the following analysis of the problem.

Also, please use the forum to report such incidents and hopefully work with the plugin author to resolve them.

Please DO NOT rate the plugin based on this warning. This is not a problem of the plugin itself. It has to do with the way PHP sends the HTTP response headers and the actual response body to the web server and also with the way WordPress and the various plugins generate them.