One of the most used WordPress filters is surely the_content
. The documentation on this filter is pretty accurate, though it lacks of some explanations concerning the debugging of the code we usually wrap within the function attached to this filter. One of the main problems of this filter regards its nature: by default, the_content
handles the entire string contained in the post_content
database field. Why sometimes this filter returns a blank string, thus suppressing the display of post's contents? Let's see in details this problem.
Consider the following code:
function do_something($content) { // do something with $content return $content; } add_filter('the_content', 'do_something');
Our function must always return the content string. If the content string is not returned, WordPress will assume that no content has to be displayed for the current post.
For example, if you perform the following test within your function:
function do_something($content) { if(is_single()) { // do something with $content return $content; } } add_filter('the_content', 'do_something');
The content will be displayed only on singular posts, but it will be suppressed on all the other sections of your site, because the return
statement is enclosed within the if
block.
You should rewrite your function as follows:
function do_something($content) { if(is_single()) { // do something with $content } return $content; } add_filter('the_content', 'do_something');
As you can see, you can manipulate the content's string as you wish. The important thing is to return such string at the very end of your function.