[theme-reviewers] Usage of wp_title filter.

Edward Caissie edward.caissie at gmail.com
Wed Oct 17 15:18:58 UTC 2012


PS: As far as amending the codex, by all mean go ahead ... I would start
with moving the "Example" into its own section rather than have it as a
sub-section of the "Best Practices" section, especially if you are seeing
issues being caused by the code. (I forgot to add this point to my original
reply.)


Cais.


On Wed, Oct 17, 2012 at 11:14 AM, Edward Caissie
<edward.caissie at gmail.com>wrote:

> Most everyone has their own way of writing this function, but this is what
> I use (or a slight variation) in all of my themes:
>
>         /**
>          * Use as filter input
>          *
>          * @param   string $old_title - default title text
>          * @param   string $sep - separator character
>          * @param   string $sep_location - left|right - separator
> placement in relationship to title
>          *
>          * @return  string - new title text
>          */
>         function dmm_wp_title( $old_title, $sep, $sep_location ) {
>             global $page, $paged;
>             /** Set initial title text */
>             $dmm_title_text = $old_title . get_bloginfo( 'name' );
>             /** Add wrapping spaces to separator character */
>             $sep = ' ' . $sep . ' ';
>
>             /** Add the blog description (tagline) for the home/front page
> */
>             $site_tagline = get_bloginfo( 'description', 'display' );
>             if ( $site_tagline && ( is_home() || is_front_page() ) )
>                 $dmm_title_text .= "$sep$site_tagline";
>
>             /** Add a page number if necessary */
>             if ( $paged >= 2 || $page >= 2 )
>                 $dmm_title_text .= $sep . sprintf( __( 'Page %s',
> 'desk-mess-mirrored' ), max( $paged, $page ) );
>
>             return $dmm_title_text;
>         }
>         add_filter( 'wp_title', 'dmm_wp_title', 10, 3 );
>
> The point being not so much the code in this case but the fact I am not
> seeing duplicate titles *and* I am not testing for `is_feed` either.
>
>
> Cais.
>
>
> On Wed, Oct 17, 2012 at 10:29 AM, WPForever Team <hi at wpforever.com> wrote:
>
>> Yes, Philip is correct.
>>
>> This is how TwentyTwelve does it -
>> http://core.trac.wordpress.org/browser/trunk/wp-content/themes/twentytwelve/functions.php#L168
>>
>>
>> Philip M. Hofer (Frumph) wrote:
>>
>>
>> That is precisely how to do it. But you should also return the
>> original $title being passed through the filter
>>
>> This is how I do it (not totally pretty), notice the check for the
>> feed if it is the feed it returns the original $title .. I probably
>> could have gotten away with just doing = .= with $title in the
>> !is_feed() section ;/
>>
>> function easel_filter_wp_title( $title ) {
>> global $wp_query, $s, $paged, $page;
>> if (!is_feed()) {
>> $sep = __('&raquo;','easel');
>> $new_title = get_bloginfo('name').' ';
>> $bloginfo_description = get_bloginfo('description');
>> if ((is_home () || is_front_page()) && !empty($bloginfo_description)
>> && !$paged && !$page) {
>> $new_title .= $sep.' '.$bloginfo_description;
>> } elseif (is_single() || is_page()) {
>> $new_title .= $sep.' '.single_post_title('', false);
>> } elseif (is_search() ) {
>> $new_title .= $sep.' '.sprintf(__('Search Results: %s','easel'),
>> esc_html($s));
>> } else
>> $new_title .= $title;
>> if ( $paged || $page ) {
>> $new_title .= ' '.$sep.' '.sprintf(__('Page: %s','easel'),max( $paged,
>> $page ));
>> }
>> $title = $new_title;
>> }
>> return $title;
>> }
>>
>> add_filter( 'wp_title', 'easel_filter_wp_title' );
>>
>> -----Original Message----- From: esmi at quirm dot net
>> Sent: Wednesday, October 17, 2012 7:16 AM
>> To: theme-reviewers at lists.wordpress.org
>> Subject: [theme-reviewers] Usage of wp_title filter.
>>
>> I've just been reviewing the Codex page on the wp_title() filter:
>>
>> <http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title>
>>
>> Specifically the example quoted as best practice. When I've tried to
>> implement that function, it generates a duplicated title in the RSS
>> feed. This can be circumvented by changing:
>>
>> return get_bloginfo( 'name' ) . $page_type . $title . $page_num;
>>
>> to:
>>
>> if( !is_feed() ) return get_bloginfo( 'name' ) . $page_type . $title .
>> $page_num;
>>
>> but I'm not 100% convinced that this is the proper usage of is_feed().
>>
>> Anyone care to comment before I amend the Codex page?
>>
>> Mel
>>
>>
>> _______________________________________________
>> 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/20121017/d82e0d44/attachment.htm>


More information about the theme-reviewers mailing list