|Plugin Name||JSM's Block Filter Output|
|Summary||Monitor the content filter and fix incorrectly coded filter hooks (that send text to the webpage instead of returning it, as all filter hooks must).|
|Requires At Least||WordPress 3.9|
|Tested Up To||WordPress 5.2.2|
|Tags / Keywords||filter, output, fix, block, report, monitor, debug|
Monitor the content filter and fix incorrectly coded filter hooks (that send text to the webpage instead of returning it, as all filter hooks must).
A notice is sent to the PHP error log when webpage output is detected:
[01-Oct-2017 01:48:28 UTC] Block Filter Output: The "ClassName::echoText" hook with priority 10 in the "the_content" filter has incorrectly sent output to the webpage. All WordPress filter hooks must return their text, not send it to the webpage output. Please contact the author of that filter hook and report this issue as a coding error. Incorrect webpage output:
<strong>Some output that should have been returned instead of echo'ed.</strong>
If you haven't enabled the WP_DEBUG constant yet, you should set the WP_DEBUG constant to true in your wp-config.php file to find out about these and any other PHP / WordPress coding errors. ;-)
The plugin only monitors the "the_content" filter by default. You can customize the list of monitored filters by defining the JSM_BFO_FILTER_NAMES constant.
define( 'JSM_BFO_FILTER_NAMES', array( 'the_title', 'the_content', 'the_excerpt', 'comment_text', 'widget_title', 'widget_text', ) );
You can also monitor the special WordPress "all" filter, although this is not recommended as it may have a negative effect on your site's performance:
define( 'JSM_BFO_FILTER_NAMES', 'all' );
The WPSSO Core plugin uses the BFO library when the "Use WordPress Content Filters" option is enabled (default) in its Advanced settings page.