Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add a prefix to WooCommerce product titles based on categories

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?

like image 986
FirefoxAurora Avatar asked Oct 17 '25 08:10

FirefoxAurora


1 Answers

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 );
like image 186
7uc1f3r Avatar answered Oct 19 '25 21:10

7uc1f3r



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!