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

Deborah Speken
Deborah Speken
4,050 Points

Hook in the my_plugin_frontend_scripts so CSS and JS display on the front end of the site. Error in add_action?

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' ), array('jquery'), '', true );

 }
 add_action( 'wp_enqueue_scripts', 'my_plugin_frontend_scripts' );
plugin.php
<?php
function my_plugin_enable_ajax() {
     ?> 

        <script>

            var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';

        </script>

     <?php
     }
     add_action( 'wp_head', 'my_plugin_enable_ajax' );

     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' ), array('jquery'), '', true );

     }
     add_action( 'wp_enqueue_scripts', 'my_plugin_frontend_scripts' );




?>

1 Answer

Sue Dough
Sue Dough
35,800 Points

Wowowow do not use this. You should never make a function inside of a function. You can call a function within a function but no make one. <<< Nevermind I read the code wrong. The indentation is so hard to read that the functions almost look nested.

You can ditch both functions for 1. The admin ajax url will pass in the javascript if you view the source on the site now.

<?php


/**
* Scripts And Styles
*
*/

add_action( 'wp_enqueue_scripts', 'my_plugin_scripts_and_styles' );

function my_plugin_scripts_and_styles() {

  wp_register_style( 'my-plugin-css', plugin_dir_url( __FILE__ ) . '/custom.css',  false );
  wp_enqueue_style( 'my-plugin-css' );
  wp_register_script( 'my-plugin-js',   plugin_dir_url( __FILE__ ) . '/custom.js', array( 'jquery' )  );
  $settings = array(
    'ajax' => admin_url( 'admin-ajax.php' ),
  );
  wp_localize_script( 'my-plugin-js', 'settings', $settings ); //pass any php settings to javascript
  wp_enqueue_script( 'my-plugin-js' );

}

And now anywhere in javascript you can use this to access the ajax url

settings.ajax