问题
Is there any chance to have a prefix title for specific categories of woocommerce products?
For example:
If I add an RTX 2080Ti to GPU Category the title needs to be [GPU] RTX 2080Ti.
I have tried many codes around the internet but couldn't reach my target.
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;
}
Can someone guide to make this function work for woocommerce?
回答1:
You can use several Conditional Tags, depending on where you would like to change the product title.
With the code below the adjustment are done on the single product page
function change_title ( $title, $post_id ) {
// Returns true on a single product page.
if ( is_product() ) {
// IDs of categories that should prepend the title
$prepend_categories = array( 15, 16 );
// get all categories via post id
$categories = wp_get_post_terms( $post_id, 'product_cat' );
foreach ( $categories as $category ) {
// Find category
if ( in_array( $category->term_id, $prepend_categories ) ) {
$title = '[' . $category->name . ']' . $title;
}
}
}
return $title;
}
add_filter('the_title', 'change_title', 10, 2 );
来源:https://stackoverflow.com/questions/61749503/add-a-prefix-to-woocommerce-product-titles-based-on-categories