Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

WordPress How to Build a WordPress Plugin Building WordPress Widgets, and Shortcodes Adding AJAX To Plugins on the Front-End

Mark Miller
Mark Miller
45,831 Points

Unexpected End of File in Wordpress plugin.php

There's something wrong with closing the php block right at the start of the php function, then opening a new php block at the end of it. With that, why would the php function admin_url() work within the function my_plugin_enable_ajax() (both are php functions) when the php code block is not running at the moment when the inner php function is called? Why would any of the php work with the block closed? And why am I getting "syntax error, unexpected end of file" every time? There's no way to fix this.

plugin.php
<?php

function my_plugin_frontend_scripts() {
    wp_enqueue_style('my_plugin_frontend_css', plugins_url('my-plugin/css/front-end.css'));

  wp_enqueue_script('my_plugin_frontend_js', plugins_url('my-plugin/js/front-end.js'), $deps = array(jquery), $ver = '', $in_footer = true);
}

add_action('wp_enqueue_scripts', 'my_plugin_frontend_scripts');

function my_plugin_enable_ajax() {?>
<script>var ajaxurl = admin_url('admin-ajax.php');</script>
<?php}

?>

2 Answers

Darryl Holtby
Darryl Holtby
14,269 Points

Remove the closing php tag from your file ?>

It is not required and could cause this message if there are hidden characters after it.

Mark Miller
Mark Miller
45,831 Points

I already tried that. Thanks anyway. I read about this error message out there, using Google search results, and found that suggestion. Tried it, but nope! No luck. I tried a lot of tricks before I posted my complaint/question in the forum. No, removing that last closing tag doesn't make a difference in my attempt to pass this challenge.

Darryl Holtby
Darryl Holtby
14,269 Points

Hi Mark,

I duplicated your issue it's with this line

<?php}

You need a space between <?php and the }

<?php }

Hopefully this does it for you.