I am trying to wrap a around the first word of multiple word widget titles. I have used the answer from here:


and adjusted it to look like:

function add_label_to_post_title( $title = '' ) {
    $ARR_title = explode(" ", $title);

    if(sizeof($ARR_title) > 1 ) {
        $first_word = "<span>".$ARR_title['0']."</span> ";
        return $first_word. implode(" ", $ARR_title);
    } else {
        return $title;

add_filter( 'widget_title', 'add_label_to_post_title' );
add_filter( 'the_title', 'add_label_to_post_title' );

and it works great on two word titles. However 3 or more word titles are not affected.

I tried modifying the code with:

preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<span>$0</span>', $string);

from here:


and had the same result, works great on two word titles but three or more are not affected. Does anyone have any idea why?

I am also using this for:


And it works xactly as expected. Also if I use:

echo add_label_to_post_title('any multiple word string with more than two words');

it also works exactly as expected.

I tried using:

add_filter('widget_title', my_title);

function my_title($title) {
// Cut the title to 2 parts
$title_parts = explode(' ', $title, 2);

// Throw first word inside a span
$title = '<span class="my_class">'.$title_parts[0].'</span>';

// Add the remaining words if any
    $title .= ' '.$title_parts[1];

return $title;

from Insert a span inside widget title to give a different color to the second word and I had the same result, it worked for up to 2 word strings but 3 or more words it does not work.

Does any one know what it is about the:


that is making this function act funny?

1 Answer 1


You should check out the filters assigned to widget_title

    global $wp_filter;
    printf('<h2>Debug:</h2><pre>%s</pre>',print_r( $wp_filter['widget_title'],true));

to see if there is anything unusual.

Also try the Twenty Twelve theme (I don't see this behaviour there) and deactive all plugins.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.