Как создать тему для WordPress?
Создать тему или "натянуть" верстку на CMS это вопрос не просто какого-то переноса разметки из одних файлов в другие. Часто это именно внедрение функционала, который отображается в макете.
Например, если в шапке есть блок с номерами телефона, то надо предусмотреть, как из админки эти номера будут добавляться, и как их выводить. Если есть блок в макете "Свежие новости" с карточками статей, значит при создании темы надо как-то организовать сбор последних записей и потом их вывод. В этом плане WP имеет, конечно, готовые решения, но часто если брать их "из коробки", то и выводятся они с версткой, которую предусмотрели разработчики WP, иначе надо либо переделать свою верстку, либо вникать в то, как работает готовое решение и как-то его менять. Так что без PHP будет тяжело. Если ничего нестандартного не надо, то все достаточно просто.
Тема WP состоит из стилей css, и файлов-шаблонов php, а также скрипта functions.php, который отвечает больше за функционал. Тему можно создать как с нуля, так и унаследоваться от какой-то готовой, и переопределить в ней шаблоны и стили.
Главный файл темы, как ни странно, это style.css. Сначала в папке /wp-content/themes/ создаете новый каталог, в нем создаете файл style.css и в этот файл кидаете комментарий:/*
Theme Name: Имя темы для админки
Author: себя любимого сюда
Text Domain: свои контакты для плюсиков в карму
*/
Если хотите унаследоваться от другой темы надо добавить еще Template: и указать название темы, а точнее папки, где лежит тема./*
Theme Name: Имя темы для админки
Author: себя любимого сюда
Text Domain: свои контакты для плюсиков в карму
Template: twentyseventeen
*/
Дальше, если надо переопределить шаблон, просто в своей папке создаете файл с таким же названием, он будет взят в приоритете. Единственное, есть нюанс с functions.php, так как родительский исполняется перед Вашим.
Работая с нуля, без наследования, надо еще добавить файлы index.php, header.php, footer.php и screenshot.png, он отобразиться в админке, как превью темы, последний, если не ошибаюсь, не обязательно. Файл header.php отвечает за вывод шапки, footer.php - подвала. index.php отвечает за все запросы, ЕСЛИ НЕТ более подходящего файла-шаблона. 404.php отвечает за 404 ошибку. page.php отвечает за вывод страницы (в WP можно создавать отдельные страницы), category.php за вывод страницы категорий, single.php за вывод одной записи и тд. Подробнее
Шаблоны можно создавать и более гибко, например, под какой-то конкретный тип записи, или для записей, которым в админке задан другой шаблон вывода, подробнее о файлах темы тут.
WP имеет систему виджетов и плагинов, которые значительно расширяют возможности движка. WP предлагает регистрацию своих таксономий, типов записей и всего такого прочего. Смотрите на сайте, который давал по ссылкам выше, а также давали выше в ответах ссылку на codex wprdpress.
Насчет других CMS верно подметили, в каждой по своему, например в OpenCart используется шаблонизатор Twig, и сам движок написан по MVC, то есть функционал отделен от отображения, поэтому в нем легче править шаблоны, в них практически один html, WP похуже, тут все вперемешку с php.
PS: создавая тему еще много есть тонкостей, например, чтобы подключить свои стили, свой js надо знать понятие хуков, и подключать скрипты и стили через вызов функций, которые в свою очередь должны подписаться на события, то есть хуки... Так что, wp не самый легкий вариант, если все эти понятия далеки от понимания, но зато есть статьи, видео, доки. Успехов!
Все зависит от шаблонизатора который используется в CMS. Но я так вижу у вопроса Тег Wordpress. 
На Wordpress темы верстаются довольно легко.
Любая тема разбивается на стандартные блоки (шапка сайта, подвал, меню, панель боковая и т.д.). В соответствии этим блокам создаются файлы с названиями. Есть свои особенности, но они указаны в документации.
Вы поймите - одну и туже сверстанную Вами тему (шаблон) для разных CMS нужно "собирать" по разному в соответствии со своими правилами.
Для примера ссылка для Wordpress Создание тем