Код `<?php echo str_replace(' - ', '<br>', get_the_title()); ?>` не работает, потому что тире в вашем коде отличается от длинного тире, которое вы хотите заменить.
Длинное тире обычно представляется символами `—` или `–`. В вашем случае, вам нужно заменить символы длинного тире на тег переноса строки `<br>`.
Вот пример кода, который заменяет длинное тире на тег переноса строки:
```php
<?php echo str_replace(array('—', '–'), '<br>', get_the_title()); ?>
```
В данном примере `array('—', '–')` представляет массив символов длинного тире, которые должны быть заменены. Функция `str_replace` заменяет каждое вхождение символов из массива на указанный тег переноса строки `<br>`.
Убедитесь, что вы используете символы длинного тире, а не обычного тире `-`.