====== Plugin Hooks & Filters ====== ===== Core Filters ===== add_filter( 'filter_name', 'function_to_call' ); * **content** Will allow you to alter or filter the //$content// variable. The function that you pass $content to should then return your results back to the system. * **menuitems** Will allow you to alter or filter the main navigation that is shown with the //get_navigation// template tag. The function that you pass //$menu// to should then return your results back to the system. ^ Filter ID ^ Description ^ arg type ^ Support ^ |content |filters page content data | string | | |menuitems |filters the menu html returned in ''get_navigation()'' | string | | |**pagecache** |filters the page cache xml object before saving | simplexmlobj | 3.3+ | |**sitemap** |filters the ''$sitemap'' xmlobj before saving | simplexmlobj | 3.3+ | |**indexid** |filters global page ''$id'' | string | 3.3+ | |**data_index** |filters global page ''$data_index'' obj | simplexmlobj | 3.3+ | |**editorlinks**|filters editor links ''get_link_menu_array'' | array| 3.3+ | ===== Core Hooks ===== add_action( 'hook_name', 'function_to_call', array( arguments ) ); The last argument is only necessary if function_to_call accepts parameters. hook_name can be any of these and determines where the function will be called. DEPRECATED\\ **NEW**\\ === Front-End Hooks === ^ Hook ID ^ Description ^ Support ^ | theme-header | Fired in '''' section of theme. Requires ''get_header()'' in template | | | theme-footer | Fired in the footer of the theme. Requires ''get_footer()'' in template | | | common | Called immediately after the plugin functions are included in ''common.php'' | 3.1+ | | content-top | Fired right above content area of theme | | | content-bottom | Fired right below content area of theme | | | index-pretemplate | Called before your template files are rendered | | | index-posttemplate | Called after your template files are rendered | | | error-404 | Called if the page does not exist before rendering the error page | | | **index-post-dataindex** | Called after the page globals are assigned from ''$data_index'' | 3.3+ | === Back-End Hooks === ^ Hook ID ^ Description ^ Support ^ | admin-pre-header | Called before the ''header.php'' template file is loaded | 3.1+ | | archive-backup | Fired when an archive backup has been created | | | caching-save | Fired before ''data/other/pages.xml'' file is saved for caching | 3.1-3.3 | | changedata-aftersave | Called after a page is saved | 3.1+ | | changedata-updateslug | Called when slug changed on an existing page | | | changedata-save | Called just before a page is saved | | | common | Called immediately after the plugin functions are included in ''common.php'' | 3.1+ | | component-extras | Fired when creating component sections, allows additional form elements | | | edit-extras | Fired within the Page Options toggle-div within ''edit.php'' | | | file-extras | Fired at the end of the file list | | | file-uploaded | Fired after a file has been successfully uploaded | | | footer | Called in the footer section of the rendered page | | | download-file | Called when downloading files via ''download.php'' | | | header | Called in the head section of the rendered page | | | header-body | Called in the body before output of the page | | | healthcheck-extras | Allows additional Health-check entries | | | html-editor-init | Called after ckeditor js is output | | | index-login | Fired above the login form | | | logfile_delete | fired when a logfile is deleted | | | login-reqs | Fired on the login page footer | | | logout | Fired when a user logs out | | | page-delete | fired when a page is deleted | | | **pagecache-aftersave** | Fired after ''data/other/pages.xml'' pagecache file is successfully saved | 3.3+ | | pages-main | Fired when the pages maincontent in rendered | | | plugin-hook | Fired before the Plugin page is rendered | | | resetpw-error | Fired when password reset and error | | | resetpw-success | Fired when password reset and successful | | | save-sitemap | Fired before the ''sitemap.xml'' file is saved | -3.1 | | settings-cpsettings | Fired before the settings cp_settings file is created | 2.x-3.0 | | settings-user | Fired before the settings user file is created | | | settings-user-extras | Fired on the settings page, before //Save Settings// in the user section | | | settings-website | Fired before the settings website page is created | | | settings-website-extras | Fired on the settings page, before //Save Settings// in the website section | | | sitemap-additem | Allow insertion of a new sitemap XML entry | -3.1 | | **sitemap-aftersave** | Called after the sitemap is successfully saved | 3.3+ | | successful-login-end | Fired after authentication success and before redirect | | | successful-login-start | Fired when before login authentication starts | | | support-extras | Allows additional support setting form entries | | | support-save | Fired before ''cp_settings.xml'' file is created | -3.0 | | theme-edit-extras | Fired in the theme edit screen before the submit button | | | theme-extras | Fired after the theme screenshot | | | welcome-doc-link | Allows additional documentation links on the Welcome page | | | welcome-link | Allows additional links on the Welcome page | | The following actions allow the customization of the administration menu and are described on [[plugins:tabs_menus|Tabs and Menus]]: * **backups-sidebar, files-sidebar, pages-sidebar, plugins-sidebar, settings-sidebar, support-sidebar, theme-sidebar** Allows additional sidebar menu items * **nav-tab** Allow insertion of a new tabbed entry in the navigation bar === Back-End GUI === ^ Hook ID ^ Description ^ Support ^ | backups-sidebar | Sidebar item on Backups Page | | | files-sidebar | Sidebar item on Files Page | | | pages-sidebar | Sidebar item on Pages Page | | | plugins-sidebar | Sidebar item on Plugins Page | | | settings-sidebar | Sidebar item on Settings Page | | | support-sidebar | Sidebar item on Support Page | | | theme-sidebar | Sidebar item on Theme Page | | | nav-tab | Insert navigation bar tab | | ===== Creating and Using Plugin Hooks/Filters ===== Similar to core hooks and filters, plugins can create their own by using the functions ''exec_action'' and ''exec_filter''. exec_action( 'hook_name' ); exec_filter( 'filter_name', 'value_to_filter' ); If your plugin uses a GS hook to alter content before it is saved (e.g, the [[http://get-simple.info/extend/plugin/multi-user/133/|MultiUser plugin]] changes the output to the ''user.xml'' file and makes all changes from other plugins in this hook undone), it is especially important to add a custom hook, so that other plugin developers can make their plugins compatible with yours if they need to alter the data too. If you created a plugin hook called 'your-plugin-hook', as described in the paragraph above, other plugin developers could then: - (1) detect whether your plugin is active by using ''pluginIsActive('your-plugin-name')'' (GS 3.3.4+) or by checking for existence of your init function/a constant you defined, and - (2) use your hook with ''add_action('your-plugin-hook', 'their-function')''. This is an important step to take in making multiple plugins from different authors compatible with one another. When naming hooks in your plugins //be sure to use a unique name// to not step on core hook ids.