Approx. read time: 27.5 min.
Post: Extending WordPress with Plugins
Using Multi-Argument Hooks
There are certain exceptions to the one-in, one-out nature of most hooks. In some cases, you need to be able to pass arguments to the functions being hooked and traditional hook usage won’t cut it.
The fourth parameter for a hook, which was discussed earlier, specifies the number of arguments the function can take. If, for example, a filter requires three arguments, you have to hook in like this:
[html] add_filter(‘author_link’, $modified_link, 10, 3);[/html]An action that requires multiple parameters would be hooked into in a similar fashion:
[html] add_action(‘save_post’, ‘notify_google’, 10, 2);[/html]Multi-argument hooks can sometimes be a difficult concept to understand, particularly if you are familiar with PHP development outside of frameworks and software packages such as WordPress. In a traditional sense, if you invoke a function, you need to also be able to directly pass arguments to it.
WordPress handles all this transparently, but you do need to ensure that the arguments the function is calling for are available in the scope that the hook is fired in.
For example, if you need to pass the $post variable to an action, you also need to ensure that the $post variable is available to be used in that scope. WordPress handles much of this with core hooks, but defining your own hooks in plugins and themes could prove tricky if you don’t understand this concept.
You can add your own hooks with the do_action() and apply_filters() functions. Each function takes a single argument that designates the hook name, while actions take optional additional values to be passed to the function (multi-argument hooks), and filters require a second parameter with the value that is being filtered; for example, do_action(‘below_post_1’) or apply_filters(‘author_name’,’James Boremen’).
Localizing Plugins
WordPress development efforts have put a major emphasis on localization. WordPress has been translated into more than 70 different languages. Beyond the scope of the core, which many international developers rightly provide internationalization support and translation efforts for, many plugins also support multiple languages.
In fact, sometimes efforts go into localizing themes as well. Localization is not a difficult process but it is a bit of work. Functions exist throughout the WordPress core that you can use in plugins as well. The engine that does the hard work of translation is called gettext and is included in PHP by default. The gettext library offers developers an API for localization and is very robust.
Related Posts: