I have a case where that are a lot of widgets in several custom sidebars. I am wondering if there is a simple way to alter the titles of each widget dynamically. Typically a widget has a title field you can set manually or on the plugin itself.
I wish to add something like a meta field value per post to each widget title.
The logic would be something like:
$dynamic_title = get_the_title();
// add a filter to change the widget titles per post value
//
// The widget title would be something like "Recent Posts for $dynamic_title"
I know there is a widget_title
filter but how do you target specific widgets?
ps. I cannot use the regular register_sidebar
parameters due to having many widgets needing specific titles.
You can use the
widget_display_callback
(fired, predictably, just prior to displaying a widget 🙂 ).The
$widget
argument is an object of your widget class, and so$widget->id_base
will contain the ID for your widget (if targeting a specific widget class).You can use your own hook for
widget_title
action. You can determine specific widget by$id_base
parameter which is passed as third argument to the hook. It should work like this:For custom widgets you will need to apply this filter to the widget’s title before echoing it (as shown the default widgets):