Нашел в закромах 2 базы синонимов и плагин для вордпресса. Рабочий или нет не знаю, но подглядеть можно. https://yadi.sk/d/wKKnMimZdaaX7
Суть простая документ с кучей строк в каждой строке через запятую варианты одного слова т.е. синонимы. Дальше просто на рандом выбираем из них и заменяем.
Указывайте страницу и домен.
И новые куки "видно" только после перезагрузки страницы.
Если перед вызовом функции клиенту уже передавался какой-либо вывод (тэги, пустые строки, пробелы, текст и т.п.), setcookie() вызовет отказ и вернет FALSE.
empty проверяет на существование переменную, и соответственно оно не генерирует ошибку undefined index. Значит проблема не в этой строчке, а скорее всего в функции getBeginSemestrDate
Ну и как обычно все пишут: не используйте функции напрямую, пользуйтесь оберткой т.е. классами или сразу библиотеками для работы с базой.
Я например предпочитаю php-activerecord