Вопрос: Сайт php + AJAX, приехали?

Лучший ответ:
Тут очень, очень много чего можно приводить к божескому виду. Вам, наверное, надо попробовать какой-нибудь не очень сложный MVC-фреймворк для начала.
Пока что весь код - сплошная каша, которую чуть проще поддерживать, чем если бы всё было в одном файле, но всё ещё значительно сложнее, чем уже проработанные решения.$data .=  '<div class="newsPhoto">';
        $data .=  '<img src="'.getImgUrl($news['photo']).'">';
        $data .=  '</div>';
        // ...
Вообще, если вам так хочется всё это делать именно в PHP - можно использовать либо Heredoc/Nowdoc, либо просто записывать в кавычках без лишних конкатенаций кода с самим собой. Хотя лучше, конечно, всё это делать в слое View (см. MVC) - попробовав вы быстро поймёте - насколько это круто, когда логика (операции с данными) и представление (вывод данных) разделены.$sql = mysql_query("SELECT news_id, title, description, photo FROM news WHERE category='1' ORDER BY news_id DESC LIMIT 10") or die(mysql_error()); 
Используйте PDO и подготовленные запросы с биндингом параметров.
А ещё у вас везде одинарные кавычки (что хорошо), а тут - двойные. Зачем? Одинарную кавычку можно экранировать с помощью бэкслеша.if (isAJAX() == false) {
echo head('Новости',array('common.css', 'news.css'),array('common.js'));
echo body();
echo news_menu();
echo news();
echo footer();
}
Это очень мило. Вы почти пришли к шаблонам :)
Могу порекомендовать вам для приобретения понимания как лучше коду выглядеть сделать три вещи:
1. Ознакомиться с PSR-2 как минимум.
2. Прочесть и постараться максимально понять Php The Right Way.
3. Переписать всё это на каком-нибудь более-менее современном, но ещё не очень сложном фреймворке, который из коробки имеет MVC. В памяти пока что всплывает, например, FuelPHP.
Ну и дальше как разберётесь - уже просто набираться опыта, смотреть как делают другие (опенсорс всегда в помощь), пробовать делать какие-то маленькие вещи для себя, чтобы разобраться в чём-то.

Худший ответ:
Конкретно с этим кодом, с минимальными затратами времени я бы сделал следующее:
1. В функциях я оставил бы только формирование массивов данных. Переименовал бы их в `get_news()`, `get_news_menu()`. Они бы возвращали только массивы данных, например:$news = [
    0 => [
        'photo' => 'photoValue',
        'title'    => 'Title Value',
        'description' => 'Some long Description',
    ],
    1 => [
        'photo' => 'photoValue',
        'title'    => 'Title Value',
        'description' => 'Some long Description',
    ],
];
С меню так же - возвращаете массив, только вместо photo, title, description уже будут url, title, что-то ещё.
2. Всю HTML-разметку можно вынести в отдельный файл, например, который в данном случае подключить при помощи include(). Но это особо не повлияет на качество кода :)
Саму разметку уже делать подобным способом, на примере с меню:<div class="card" style="height: 30px;">
    <?php foreach (get_menu_items() as $menuItem) : ?>
        <a href="<?= $menuItem['url'] ?>"><?= $menuItem['title'] ?></a>
    <?php endforeach; ?>
</div>
Потом, с опытом, придёт понимание того, что некоторые части повторяются и их можно и нужно выносить в отдельные блоки (Twig), паршалы (symfony1, zend1).
3. Относительно аякса, то ничто вам не мешает, если это аякс возвращать на клиент json структуры ваших новостей, который клиент уже будет рендерить так, как пожелает. А на сервере это всего лишь `json_encode(get_news());` отправить в браузер. 
P.S. мог допустить синтаксических ошибок, так как в IDE не проверял. Надеюсь, что помог.