This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
plugins:hooks_filters [2015/01/12 15:49] shawn_a [Core Filters] |
plugins:hooks_filters [2017/01/19 16:10] lokothodida [Creating and Using Plugin Hooks/Filters] |
||
---|---|---|---|
Line 10: | Line 10: | ||
|content |filters page content data | string | | | |content |filters page content data | string | | | ||
|menuitems |filters the menu html returned in ''get_navigation()'' | string | | | |menuitems |filters the menu html returned in ''get_navigation()'' | string | | | ||
- | |**pagecache** |filters ''$pagesarray'' data before saving | array | 3.3+ | | + | |**pagecache** |filters the page cache xml object before saving | simplexmlobj | 3.3+ | |
|**sitemap** |filters the ''$sitemap'' xmlobj before saving | simplexmlobj | 3.3+ | | |**sitemap** |filters the ''$sitemap'' xmlobj before saving | simplexmlobj | 3.3+ | | ||
|**indexid** |filters global page ''$id'' | string | 3.3+ | | |**indexid** |filters global page ''$id'' | string | 3.3+ | | ||
Line 101: | 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. |