Видимо ДО вызова setcookie() у вас уже делается какой-нибудь вывод страницы.
Из-за этого не успевают передаться данные (cookies), которые должны быть выведены в header HTTP-ответа.
PHP конечно ругается об опоздавшем применении setcookie(), но у вас подавлен вывод ошибок на страницу, их не видно. Загляните в error.log WEB-сервера, там этих ошибок 'Cannot modify header information' будет...
Хотя нет, WP все ошибки складывает в своём лог-файле, смотрите там. А может это WP перестраивает всю логику работы, и нужно пользоваться исключительно его функциями управления cookie-сами...
Резюмируя: перенесите setcookie() в index.php первой строкой, что бы уж точно срабатывало раньше любого вывода.