О насБлогКонтакты
Веб-разработка25 августа 2003 г. 3 мин 103Обновлено: 22 июня 2026 г.

WordPress 0.7: день, когда блоггинг стал доступен всем (2003)

AunimedaAunimeda
📋 Содержание

До WordPress публикация в вебе означала одно из трёх: писать HTML вручную, платить за проприетарную CMS, или разбираться с Movable Type (Perl, сложно) или b2/cafelog (PHP, автор которого исчез).

Мэтт Мулленвег использовал b2. В январе 2003 года его автор Мишель Вальдриги пропал. Мулленвег написал пост: «К счастью, b2 распространяется под GPL, значит я могу использовать кодовую базу для форка». Майк Литтл прокомментировал что готов участвовать. 27 мая 2003 года вышел WordPress 0.7.

Я установил его в августе. Это было 2500 строк PHP. Установка: распаковать, загрузить по FTP, создать базу MySQL, открыть install.php. Пять минут. Movable Type требовал настройки Perl-модулей, прав доступа на десяток директорий и ручного редактирования конфига. Разница во фрикции была принципиальной.


The Loop - основа WordPress

<?php
// WordPress Loop - версия 2003 года
// Эта конструкция стала самым копируемым PHP-кодом в истории веба

<?php query_posts('showposts=10'); ?>
<?php while (have_posts()) : the_post(); ?>
  <div class="post">
    <h2>
      <a href="<?php the_permalink(); ?>">
        <?php the_title(); ?>
      </a>
    </h2>
    <div class="meta">
      Опубликовано <?php the_time('d.m.Y'); ?>
      автором <?php the_author(); ?>
      | <?php comments_popup_link('Нет комментариев', '1 комментарий', '% комментариев'); ?>
    </div>
    <div class="entry">
      <?php the_content('Читать далее &raquo;'); ?>
    </div>
  </div>
<?php endwhile; ?>

Конструкция while (have_posts()) : the_post() стала самым воспроизводимым PHP-паттерном в истории веба. К 2010 году она работала примерно на 13% всех сайтов.


Схема базы данных (WordPress 0.7)

-- Оригинальная схема WordPress 0.7, MySQL 3.23+
-- До сих пор узнаваема в WordPress спустя 20 лет

CREATE TABLE wp_posts (
  ID           bigint(20) unsigned NOT NULL auto_increment,
  post_author  bigint(20) unsigned NOT NULL default '0',
  post_date    datetime NOT NULL default '0000-00-00 00:00:00',
  post_content longtext NOT NULL,
  post_title   text NOT NULL,
  post_status  varchar(10) NOT NULL default 'publish',
  post_name    varchar(200) NOT NULL default '',
  post_modified datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (ID),
  KEY post_name (post_name)
) TYPE=MyISAM;

CREATE TABLE wp_options (
  option_id    bigint(20) unsigned NOT NULL auto_increment,
  option_name  varchar(64) NOT NULL default '',
  option_value longtext NOT NULL,
  autoload     varchar(20) NOT NULL default 'yes',
  PRIMARY KEY  (option_id),
  UNIQUE KEY option_name (option_name)
) TYPE=MyISAM;

-- wp_options - key-value хранилище конфигурации.
-- Гибкость без миграций схемы. Позже критиковалось как bottleneck.
-- В 2003 - правильное решение.

Кастомизация без плагинов: прямое редактирование шаблонов

Плагинов в 0.7 не было. Кастомизация - прямое редактирование index.php и sidebar.php:

<?php
// sidebar.php - «Последние записи» без плагинов, 2003 год
// Прямой SQL через $wpdb - единственный способ тогда

global $wpdb;
$recent = $wpdb->get_results(
    "SELECT ID, post_title, post_date
     FROM $wpdb->posts
     WHERE post_status = 'publish'
     ORDER BY post_date DESC
     LIMIT 5"
);
?>
<div id="sidebar">
  <h2>Последние записи</h2>
  <ul>
    <?php foreach ($recent as $post): ?>
    <li>
      <a href="<?php echo get_permalink($post->ID); ?>">
        <?php echo htmlspecialchars($post->post_title); ?>
      </a>
    </li>
    <?php endforeach; ?>
  </ul>
  <h2>Архивы</h2>
  <ul><?php wp_get_archives('type=monthly'); ?></ul>
</div>

Плагины появились в WordPress 1.2 (май 2004). До этого - только прямая модификация файлов.


Почему это важнейшее ПО 2003 года

WordPress 0.7 выжил там, где Movable Type, b2 и десятки других блог-движков угасли, по трём причинам:

Лицензия GPL. Сообщество могло исправлять баги не дожидаясь автора. Это позволило экосистеме плагинов взорваться после версии 1.2.

Путь обновления не ломался никогда. От 0.7 до сегодняшнего дня обновление WordPress не требовало ручной миграции БД или переписывания шаблонов. Пользователи оставались, а не уходили к «следующей новинке».

Работал на shared-хостинге. PHP + MySQL + .htaccess. Тот же $8-хостинг, что был у всех.

К 2008 году WordPress - доминирующая блог-платформа. К 2012-му - доминирующая CMS. К 2023-му - 43% всех сайтов в мире. Всё это началось с 2500 строк PHP, опубликованных на SourceForge 27 мая 2003 года.

Читайте также

Как работать с API ВКонтакте на PHP: авторизация, посты, статистика (2015)aunimeda
Веб-разработка

Как работать с API ВКонтакте на PHP: авторизация, посты, статистика (2015)

ВКонтакте в 2015 году - 65 млн активных пользователей в месяц, крупнейшая соцсеть Рунета. API позволял авторизовывать пользователей, публиковать от имени сообщества, собирать аналитику. Вот полная интеграция: OAuth 2.0, VK Login, автопостинг, работа с wall.post.

Google Chrome и V8: когда JavaScript стал быстрым (2008)aunimeda
Веб-разработка

Google Chrome и V8: когда JavaScript стал быстрым (2008)

2 сентября 2008 года Google выпустил Chrome. Не браузер - манифест. Внутри был V8: JIT-компилятор JavaScript, написанный с нуля. SunSpider показал, что V8 в 10 раз быстрее Firefox 3. За один день ожидания от JavaScript радикально изменились. Начался browser war 2.0.

Ajax: имя, изменившее веб (2005)aunimeda
Веб-разработка

Ajax: имя, изменившее веб (2005)

18 февраля 2005 года Джесси Джеймс Гаррет опубликовал статью «Ajax: новый подход к веб-приложениям». Технология не была новой - XMLHttpRequest существовал с 1999 года. Но имя изменило всё: разработчики получили паттерн, словарь и разрешение думать о браузере как о платформе приложений.

Нужна IT-разработка для вашего бизнеса?

Разрабатываем сайты, мобильные приложения и AI-решения для бизнеса в России. Бесплатная консультация.

Разработка сайтов

Получить консультацию Все статьи