Using ob_start() in plugin

I’m learning how to build a WordPress plugin. In the sample plugin code, I have this PHP/HTML:

ob_start();

// other plugin code

<?php function plugin_rvce_options_page() { ?>

    <div>

        <form action="options.php" method="post">

            <?php settings_fields('plugin_options'); ?>
            <?php do_settings_sections('plugin'); ?>

            <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />

        </form>

    </div>

<?php } ?>

Initially, this was causing the warning “Headers already sent” before I found ob_start. After implementing ob_start I don’t get the warnings.. but am I using it correctly by just adding ob_start at the top of my plugin file?

3 Answers
3

No, this is not a correct use for ob_start(). You’re getting the warning because your script is outputting code before the page headers are sent – meaning you’re printing output before the html page.

Without knowing what’s going on in your // other plugin code it’s difficult to say what’s happening exactly. I would guess you’re calling plugin_rvce_options_page() somewhere in the root of the functions.php file instead of in a function that outputs to an admin page. In any case, try and fix the issue and don’t use ob_start() as a work-around.

Leave a Comment