Smart javascript use when developing a WordPress plugin.
Recently after looking at some of the plugin’s available I noticed some people including their own version of jquery or prototype. This is not how the plugin API was intended. WordPress comes with a bunch of useful scripts you can use without having to include in your plugin directly. The function is called wp_enqueue_script(). Here is the usage.
<?php wp_enqueue_script( $handle ,$src ,$deps ,$ver ,$in_footer ); ?>
http://codex.wordpress.org/Function_Reference/wp_enqueue_script
So to include a copy of JQuery into your plugin all you have to do is add the following to your plugin.
<?php wp_enqueue_script('jquery'); ?>
This tells WordPress to include jquery and will only include it if it hasn’t been included already which leads to a lower code footprint and better compatibility!
Of course your going to want to include that into wp_head. Here is the full code including the wp_head hook.
<?php //function. Notice !is_admin this tells it to only include if its not admin function sp_client_upload_init() { if (!is_admin()) { wp_enqueue_script('jquery'); } } //hook to insert javascript into header add_action('wp_head', 'sp_client_upload_load_css'); ?>
Here are the javascript files that are included with WordPress by default
Scriptaculous Root | scriptaculous-root |
Scriptaculous Builder | scriptaculous-builder |
Scriptaculous Drag & Drop | scriptaculous-dragdrop |
Scriptaculous Effects | scriptaculous-effects |
Scriptaculous Slider | scriptaculous-slider |
Scriptaculous Sound | scriptaculous-sound |
Scriptaculous Controls | scriptaculous-controls |
Scriptaculous | scriptaculous |
Image Cropper | Image cropper (not used in core, see jcrop) |
Jcrop | Image copper |
SWFObject | swfobject |
SWFUpload | swfupload |
SWFUpload Degrade | swfupload-degrade |
SWFUpload Queue | swfupload-queue |
SWFUpload Handlers | swfupload-handlers |
jQuery | jquery |
jQuery Form | jquery-form |
jQuery Color | jquery-color |
jQuery UI Core | jquery-ui-core (Att.: This is not the whole core incl. all core plugins. Just the base core.) |
jQuery UI Widget | jquery-ui-widget |
jQuery UI Mouse | jquery-ui-mouse |
jQuery UI Accordion | jquery-ui-accordion |
jQuery UI Slider | jquery-ui-slider |
jQuery UI Tabs | jquery-ui-tabs |
jQuery UI Sortable | jquery-ui-sortable |
jQuery UI Draggable | jquery-ui-draggable |
jQuery UI Droppable | jquery-ui-droppable |
jQuery UI Selectable | jquery-ui-selectable |
jQuery UI Datepicker | jquery-ui-datepicker |
jQuery UI Resizable | jquery-ui-resizable |
jQuery UI Dialog | jquery-ui-dialog |
jQuery Schedule | schedule |
jQuery Suggest | suggest |
ThickBox | thickbox |
jQuery Hotkeys | jquery-hotkeys |
Simple AJAX Code-Kit | sack |
QuickTags | quicktags |
Farbtastic (color picker) | farbtastic |
ColorPicker (deprecated) | colorpicker |
Tiny MCE | tiny_mce |
Prototype Framework | prototype |
Autosave | autosave |
WordPress AJAX Response | wp-ajax-response |
List Manipulation | wp-lists |
WP Common | common |
WP Editor | editor |
WP Editor Functions | editor-functions |
AJAX Cat | ajaxcat |
Admin Categories | admin-categories |
Admin Tags | admin-tags |
Admin custom fields | admin-custom-fields |
Password Strength Meter | password-strength-meter |
Admin Comments | admin-comments |
Admin Users | admin-users |
Admin Forms | admin-forms |
XFN | xfn |
Upload | upload |
PostBox | postbox |
Slug | slug |
Post | post |
Page | page |
Link | link |
Comment | comment |
Threaded Comments | comment-repy |
Admin Gallery | admin-gallery |
Media Upload | media-upload |
Admin widgets | admin-widgets |
Word Count | word-count |
Theme Preview | theme-preview |
JSON for JS | json2 |