Solved the issue by passing the term_name as a parameter to the callback function to the filter.
function bn_term_title( $term_name ) {
$term_types = get_term_by( 'name', $term_name, 'tax_1' );
if( $term_types->taxonomy === 'tax_1' ) {
if( get_locale() === 'bn_BD' )
return get_term_meta( $term_types->term_id, 'tax1_bn' );
else
return $term_name;
}
$term_categories = get_term_by( 'name', $term_name, 'tax_2' );
if( $term_categories->taxonomy === 'tax_2' ) {
if( get_locale() === 'bn_BD' )
return get_term_meta( $term_categories->term_id, 'tax2_bn' );
else
return $term_name;
}
}
add_filter( 'single_term_title', 'bn_term_title' );
The code can be more concise when get_term_by()
will make the $taxonomy
parameter optional. If the taxonomy parameter become optional we can do it like below:
function bn_term_title( $term_name ) {
$term_types = get_term_by( 'name', $term_name );
if( get_locale() === 'bn_BD' )
return get_term_meta( $term_types->term_id, 'term_bn' );
else
return $term_name;
}
add_filter( 'single_term_title', 'bn_term_title' );