You have already mentioned the function wp_title()
. Right before outputting the title, it passes its value through the filter wp_title
, which can be used here to prepend with additional information.
add_filter('wp_title', 'WPSE_20181106_prepend_title', 10, 3);
function WPSE_20181106_prepend_title($title, $sep, $seplocation) {
// not a single post
if (!is_singular('post')) {
return $title;
}
// IDs of categories that should prepend the title
$prepend_categories = [15, 35];
// get all categories of post
$categories = get_the_category();
foreach ($categories as $category) {
// found category
if (in_array($category->term_id, $prepend_categories)) {
// return new format, using __() so it is translateable
return sprintf('%s %s: %s',
__('Download', 'lang-slug'),
$category->name,
$title
);
}
}
// category not found, return default
return $title;
}