[theme-reviewers] Use of Action/Filter Hooks in WordPress Theme

Chip Bennett chip at chipbennett.net
Tue Jul 26 18:34:07 UTC 2011


That's why I've taken *both* approaches: developers (or savvy users) can
take advantage of the action/filter hooks, and completely modify the Theme
using nothing other than style.css and functions.php; while at the same
time, less-savvy users can modify the Theme using the more-basic (and
easier-to-understand) template-part files.

But I wouldn't necessarily recommend this approach to anyone. I agree with
Josh: pick an audience, and code accordingly. I've chosen to employ both
methods, only because I wanted to try to provide best-practice
implementation examples for both methods.

Chip

On Tue, Jul 26, 2011 at 1:22 PM, Edward Caissie <edward.caissie at gmail.com>wrote:

> Personally I see themes being submitted to the repository as more end-user
> first more than anything else. That does not mean to say you should not use
> the "Action" approach over the "Simple" approach as both accomplish the same
> goals but there is a lot to say about keeping things simple, aka K.I.S.S.
>
>
> Cais.
>
>
>
> On Tue, Jul 26, 2011 at 10:39 AM, Josh Stauffer <joshstauffer at gmail.com>wrote:
>
>> In my opinion, I believe the Action approach is easier for developers
>> while the Simple approach is easier for your average end-user. The question
>> you should ask is "who are you building this theme for?" Answer that and
>> code it accordingly.
>>
>> Josh
>>
>>
>>
>> On Tue, Jul 26, 2011 at 9:30 AM, Qamar Ashraf <life.object at gmail.com>wrote:
>>
>>> Thanks Chip,
>>>
>>> I also love hooks and *Oenology 2.0* is an excellent example of hooks.
>>> But i am also thinking about end-user flexibility who have not much more
>>> idea about using them. So, i was thinking about the complexity of code
>>> before submitting to the WordPress directory. Okay, what you prefer in the
>>> following two code snippets in terms of,
>>>
>>>    - Simplicity for End Users who have little idea about Child Themes.
>>>    - Code efficiency.
>>>
>>> *1. Action Approach:*
>>>
>>> <?php do_action( 'chip_header_pre' ); ?>
>>>>   <div id="header">
>>>>     <div id="header-data">
>>>>       <?php do_action( 'chip_header' ); ?>
>>>>     </div> <!-- end #header-data -->
>>>>   </div> <!-- end #header -->
>>>> <?php do_action( 'chip_header_post' ); ?>
>>>
>>>
>>> *2. Simple Approach:*
>>>
>>> <?php get_template_part( 'nav', 'primary' ); ?>
>>>>   <div id="header">
>>>>     <div id="header-data">
>>>>       <?php get_template_part( 'header', get_chip_header_format() ); ?>
>>>>       <div class="clear"></div>
>>>>     </div> <!-- end #header-data -->
>>>>   </div> <!-- end #header -->
>>>> <?php get_template_part( 'nav', 'secondary' ); ?>
>>>
>>>
>>>
>>> You can guess better the complexity of hooks in the loop :)
>>>
>>> Regards
>>>
>>>
>>> On Tue, Jul 26, 2011 at 7:14 PM, Chip Bennett <chip at chipbennett.net>wrote:
>>>
>>>> Personally, I think action/filter hooks are Teh Awesome. I also use
>>>> them, quite extensively<https://github.com/chipbennett/oenology/blob/master/functions/hooks.php>
>>>> .
>>>>
>>>> But I'm not really sure what you're asking?
>>>>
>>>> Are they acceptable? Of course; provided they are implemented properly,
>>>> per the appropriate API conventions.
>>>>
>>>> Are they best practice? In my personal opinion, they are; I prefer them
>>>> to, e.g. pluggable functions. But at least currently, the Guidelines are
>>>> silent on custom hooks.
>>>>
>>>> (p.s. you should prefix your hooks with theme_slug, or at the very
>>>> least, make sure your hook-name prefixes are consistent with the rest of the
>>>> Theme - which, IIRC, is Chip Life, or "chip_life" as a prefix?)
>>>>
>>>> Chip
>>>>
>>>> On Tue, Jul 26, 2011 at 8:08 AM, Qamar Ashraf <life.object at gmail.com>wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I am going to share my WordPress Theme development logic for an expert
>>>>> opinion. So it will help me and others in the WP theme development, Here is
>>>>> a sample code of header template,
>>>>>
>>>>>  <?php do_action( 'chip_header_pre' ); ?>
>>>>>>   <div id="header">
>>>>>>     <div id="header-data">
>>>>>>       <?php do_action( 'chip_header' ); ?>
>>>>>>     </div> <!-- end #header-data -->
>>>>>>   </div> <!-- end #header -->
>>>>>> <?php do_action( 'chip_header_post' ); ?>
>>>>>
>>>>>
>>>>>
>>>>> - I have written different modules like, Primary Menu, Secondary Menu
>>>>> etc.
>>>>> - So i can easily attach these modules to any hook with add_action(),
>>>>> depending on the requirement/presentation of a them/child theme.
>>>>>
>>>>> *Child Theme A Example*
>>>>>
>>>>> add_action('chip_header_pre', 'chip_primary_menu_init');
>>>>> add_action('chip_header_post', 'chip_secondary_menu_init');
>>>>>
>>>>> *Child Theme B Example*
>>>>>
>>>>> add_action('chip_header_pre', 'chip_secondary_menu_init');
>>>>> add_action('chip_header_post', 'chip_primary_menu_init');
>>>>>
>>>>> Both of above child themes will have different presentation of menus,
>>>>> with just a single line of code, and there may any other combination as
>>>>> well.
>>>>>
>>>>> *So what is the recommendation of experts to have this logic ?*
>>>>>
>>>>> --
>>>>> Regards
>>>>> Qamar Ashraf
>>>>> www.tutorialchip.com
>>>>> @lifeobject1
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> theme-reviewers mailing list
>>>>> theme-reviewers at lists.wordpress.org
>>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>
>>>
>>> --
>>> Regards
>>> Qamar Ashraf
>>> www.tutorialchip.com
>>> @lifeobject1
>>>
>>>
>>> _______________________________________________
>>> theme-reviewers mailing list
>>> theme-reviewers at lists.wordpress.org
>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>
>>>
>>
>> _______________________________________________
>> theme-reviewers mailing list
>> theme-reviewers at lists.wordpress.org
>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>
>>
>
> _______________________________________________
> theme-reviewers mailing list
> theme-reviewers at lists.wordpress.org
> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.wordpress.org/pipermail/theme-reviewers/attachments/20110726/a4ef7aaf/attachment-0001.htm>


More information about the theme-reviewers mailing list