0

This is my first attempt at creating my own plugin and everything was working just fine until I tried to add or update a page through wp-admin. If I deactivate the plugin, the sites works as it should. I get an error about headers already being sent by my file and I'm not sure how to get around this. Like I said, this is my first attempt.

Here is my very simple plugin file:

include(plugin_dir_path( __FILE__ ) . 'ndmr-plugin.php');
add_shortcode('small_ndmr_buttons_sc','small_ndmr_buttons');

add_action('init', 'small_ndmr_buttons_plugin');
function small_ndmr_buttons_plugin() {

    add_action('wp_enqueue_scripts', 'ndmr_plugin_stylesheet');

    function ndmr_plugin_stylesheet() {
        wp_register_style('ndmr-plugin-style', plugins_url('style.css', __FILE__), array() );
        wp_enqueue_style('ndmr-plugin-style');

        wp_register_script('ndmr-plugin-jquery', plugins_url('ndmr-plugin-javascript.js', __FILE__), array() );
        wp_enqueue_script('ndmr-plugin-jquery');
    }

}

And this is the file that renders the shortcode:

function small_ndmr_buttons(){
    return '
        <div class="small-ndmr-buttons">
            <div>
                <p>search</p>
                <ul>'.
                    wp_list_pages('title_li=&child_of=25&echo=0')
                .'</ul>
            </div>
            <div>
                <p>social</p>
                <ul>'.
                    wp_list_pages('title_li=&child_of=27&echo=0')
                .'</ul>
            </div>
            <div>
                <p>design</p>
                <ul>'.
                    wp_list_pages('title_li=&child_of=29&echo=0')
                .'</ul>
            </div>
            <div>
                <p>tv/radio</p>
                <ul>'.
                    wp_list_pages('title_li=&child_of=31&echo=0')
                .'</ul>
            </div>
            <div>
                <p>yellow pages</p>
                <ul>'.
                    wp_list_pages('title_li=&child_of=33&echo=0')
                .'</ul>
            </div>
            <div>
                <p>billboard</p>
                <ul>'.
                    wp_list_pages('title_li=&child_of=35&echo=0')
                .'</ul>
            </div>
            <span class="clear"></span>
        </div>
    ';
}

The file that renders the shortcode is where I'm getting the error Cannot modify header information - headers already sent by

I tried using ob_start();, but that just echo's the text in the file and kills the wordpress back end entirely. Am I missing something having to do with the plugin?

Thank you for any help you might have.

stinkysGTI
  • 573
  • 6
  • 21

1 Answers1

2

Do you have any whitespace before the opening PHP tag or after the closing tag? Typically that's the most common cause for an error like this. More information here in the codex: https://codex.wordpress.org/FAQ_Troubleshooting

josefresco
  • 143
  • 7