This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
plugins:hooks_filters [2013/12/17 19:41] Carlos [Core Hooks] add common to frontend hooks too |
plugins:hooks_filters [2017/01/19 16:10] (current) lokothodida [Creating and Using Plugin Hooks/Filters] |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Core Filters ===== | ===== Core Filters ===== | ||
- | <code>add_filter('filter_name','function_to_call');</code> | + | <code>add_filter( 'filter_name', 'function_to_call' );</code> |
* **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. | * **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. | * **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 ^ Support ^ | + | ^ Filter ID ^ Description ^ arg type ^ Support ^ |
- | |content |filters page content data | | | + | |content |filters page content data | string | | |
- | |menuitems |filters the menu html returned in ''get_navigation()'' | | | + | |menuitems |filters the menu html returned in ''get_navigation()'' | string | | |
- | |**pagecache** |filters ''$pagesarray'' data before saving | 3.3+ | | + | |**pagecache** |filters the page cache xml object before saving | simplexmlobj | 3.3+ | |
- | |**sitemap** |filters the ''$sitemap'' xmlobj before saving | 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 ===== | ===== Core Hooks ===== | ||
- | <code>add_action('hook_name','function_to_call',array(arguments));</code> | + | <code>add_action( 'hook_name', 'function_to_call', array( arguments ) );</code> |
The last argument is only necessary if function_to_call accepts parameters. | The last argument is only necessary if function_to_call accepts parameters. | ||
Line 35: | Line 37: | ||
| index-posttemplate | Called after 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 | | | | 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 === | === Back-End Hooks === | ||
Line 97: | Line 101: | ||
| theme-sidebar | Sidebar item on Theme Page | | | | theme-sidebar | Sidebar item on Theme Page | | | ||
| nav-tab | Insert navigation bar tab | | | | 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''. | ||
+ | |||
+ | <code> | ||
+ | exec_action( 'hook_name' ); | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | exec_filter( 'filter_name', 'value_to_filter' ); | ||
+ | </code> | ||
+ | |||
+ | 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. |