Для того, чтобы пересобрать заголовок по условию, вам в любом случае нужна ссылка с get-переменными такого вида
https://example.loc/products/?type=furniture&color=white
Для плагина Yoast я делаю следующим образом:
- Создаю переменную %%InsteadTitle%%'
- Заменяю ее в настройках в админке
- Программно получаю get-параметры с добавлением из в заголовок
- Если язык русский, то прогоняю через фукнцию замены подстрок
function get_seo_instead_title() {
$string = '';
if ( is_single() && get_post_type() === 'product' ) {
$string = get_the_title();
$params = array( 'type', 'color' );
// Добавляем в заголовок параметры get-запроса
foreach ( $params as $key => $param ) {
$var = get_query_var( $param, false );
if ( $var ) {
$string .= ', ' . $var;
}
}
// Делаем перевод
if ( determine_locale() === 'ru_RU' ) {
$converter = array(
'furniture' => 'мебель',
'white' => 'белый',
);
$string = strtr( $string, $converter );
}
}
if ( $string === '' ) {
if ( is_post_type_archive() ) {
$string = get_queried_object()->label;
} elseif ( is_archive() ) {
$string = get_queried_object()->name;
} elseif ( is_single() ) {
$string = get_the_title();
} else {
$string = 'Дефолтный заголовок (для главной)';
}
}
return $string;
}
// Define the action for register yoast_variable replacments.
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%InsteadTitle%%', 'get_seo_instead_title', 'advanced', 'Some instead title text' );
}
add_action( 'wpseo_register_extra_replacements', 'register_custom_yoast_variables' );