FAQ по WordPress

Ответы на часто задаваемые вопросы по WordPress.

Метод пактной загрузки стилей и скриптов. Долой лишний код!

Итак, вопрос: а нужны ли пачки строк в шапке вида "<script src="…" type="text/javascript"></script><style type="text/css" media="screen">@import url(‘…’);</style>" и так далее. с увеличением "фишечек" количество их заставляет задуматься – а оно того стоит? у мну когда одни мета-поля стали вырастать более чем за 70 строк (включая php условия) – задумался..
Ведь можно сделать проще – отдавать браузеру весть кантент одним потоком – увеличим скорость загрузки страницы, и добьемся поставленной цели – избавимся от лишнего кода. Формат запроса будет: скрипт.php?режим;файлы, остается лищь сформировать вызов к скрипту и собственно его самого наколбасить.
Плавно переходим к кодингу. В functions.php добавляем:

define('INFINE_FILES_LOADER',   'metaloader.php'); // загрузчик файлов, юзаемый для скриптов и ксс
function infine_include_file($filename) { # эту функцию юзаю и для других целей
  if(file_exists($filename)) include_once($filename);
}
infine_include_file(TEMPLATEPATH.'/'.INFINE_FILES_LOADER);

в корень темы аккуратно ложим файл metaloader.php, со следующим содержанием:

<?php

define('INFINE_METALOAD_BRCHAR',  ';');

function infine_load_files($mode = 'css', $files = '', $echo = false, $printBefore = '') {
  if($files !== '' && is_array($files)) {
    switch ($mode) {
      case 'css':
        $prefix = "<style type=\"text/css\" media=\"screen\">@import url('";
        $postfix = "');</style>\n";
        break;
      case 'js':
        $prefix = "<script src=\"";
        $postfix = "\" type=\"text/javascript\"></script>\n";
        break;
    }
    $request = get_bloginfo('template_url').'/'.INFINE_FILES_LOADER;
    $request .= "?$mode".INFINE_METALOAD_BRCHAR;
    $files = array_unique($files);
    for ($i = 0; $i < count($files); $i++) {
      $request .= $files[$i];
      if($i != count($files)-1)
        $request .= INFINE_METALOAD_BRCHAR;
    };
    $request = $printBefore.$prefix.$request.$postfix;
    if($echo){
      print $request;
    } else {
      return $request;
    }
  }
}

$request = $_SERVER['QUERY_STRING'];

if(isset($request)) {
  static $contentType, $charset;
  $files = array();
  $i = 0;
  $charset = 'UTF-8';

  # выполняем проверку
  $request_files = str_ireplace("..", "", $request);

  # из запроса формируем массив с именами файлов
  $f = strtok($request_files, INFINE_METALOAD_BRCHAR);
  while ($f) {
    $files[$i] = $f;
    $f = strtok(INFINE_METALOAD_BRCHAR);
    $i++;
  }

  $request_mode = array_shift($files);

  foreach($files as $file) {
    #print "/* filename: ".$file." */\n";
    $content .= @file_get_contents($file);
  }

  $content = str_replace(array("  ", "\n", "\r\r"), "", $content); # more compress, but js maybe not work
  //$content = preg_replace("/\/\*+.*?\*\/+/", "", $content); # вырезаем комментарии между /* */

  switch ($request_mode) {
    case 'css':
      $contentType = "text/css";
      break;
    case 'js':
      $contentType = "text/javascript";
      break;
    break;
  }
  ob_start("ob_gzhandler");
  header("Content-type: $contentType; charset: $charset");
  header("Cache-Control: must-revalidate");
  header("Expires: ".gmdate("D, d M Y H:i:s",time() + 3600 /* 60*60 */) . " GMT");
  print $content;
}

оттак. с файлами вроде разобрались. теперь доберемся до шапки нашей любимой темы. В нулевую строку вписываем:

<?php
$cssfiles = array(); #массив с путями к css-файлам
$js_files = array(); #массив с путями к скриптам
?>

м теперь заменяем цель нашей работы – все вызовы к стилям и скриптам заменяем соответственно:

array_push($cssfiles, get_bloginfo('template_url').'/mozilla.css'); /* CSS */
array_push($js_files, get_bloginfo('template_url').'/swfobject.js'); /* JS */

последний шаг: пора вывести сформированный запрос:

<?php infine_load_files('js', $js_files, true); ?>
<?php infine_load_files('css', $cssfiles, true); ?>

вот вроде и всё. теперь на выходе получим не

<script src="http://www.your-site.com/wp-content/themes/theme/js/script1.js" type="text/javascript">
<script src="http://www.your-site.com/wp-content/themes/theme/js/script2.js" type="text/javascript">
<script src="http://www.your-site.com/wp-content/themes/theme/js/script3.js" type="text/javascript">
<script src="http://www.your-site.com/wp-content/themes/theme/js/script4.js" type="text/javascript">

а

<script src="http://www.your-site.com/wp-content/themes/theme/metaloader.php?js;http://www.your-site.com/wp-content/themes/theme/js/script1.js;http://www.your-site.com/wp-content/themes/theme/js/script2.js;http://www.your-site.com/wp-content/themes/theme/js/script3.js;http://www.your-site.com/wp-content/themes/theme/js/script4.js" type="text/javascript">

из кода будут вырезаны комментарии /* … */, лишние пробелы, лишние переносы строк (повторяющиеся). Проверено, работает без проблем. таким методом подрезал на скриптах ещё порядка 8..12% от общей массы

upd. обновил скрипт. теперь работает как надо
upd. обновил metaloader.php – теперь он ещё и gz-ом жмет. экономим ещё порядка 30-40%

ps. нечто подобное уже встречал в сети, но на момент написания не нашел.

Выделение постов из выбранной категории на главной.

Собственно нужно было на главной блога выделить посты из нужной категории отдельно. Пример реализации – blogomob.ru. Тут посты из категории "блогомобы" имеют серый фон. Можно сотворить всё что вы с ними хотите через css.

Делается так:

для выделения на главной странице index.php
дописываем в шаблон

[quote]<?php get_header(); $uniq_id = 1; ?> // 1 – номер категории. смотрим в админ панели

<div id="content" class="narrowcolumn">

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>

<div class="post" id="post-<?php the_ID(); ?>"<?php if(in_category($uniq_id)) print " class=\"super_post\""; ?>>[/quote]
теперь в css прописываем правила для класса super_post

я к примеру поставил пока только background: #нужный цвет. вообще тут только ваша фантазия и знания css )

Спасибо Николаю, за помощь 🙂

Тут публикуем ссылки на коллекции бесплатных шаблонов

Предлагаю в этом топике совместными усилиями создать подборку ссылок на коллекции приличных бесплатных шаблонов для WordPress. Вношу свою скромную лепту:

http://www.freewpthemes.net/wordpress-themes/
http://www.briangardner.com/themes/
http://www.blogohblog.com/category/wordpress-themes/
http://themes.wordpress.net/

http://www.wpthemesfree.com/ (на этом сайте очень много отличных красивых шаблонов, но у многих Zend’ом закодированы футеры, содержащие "левые" ссылки – своеобразная плата за халяву)

html из внешнего файла на статической странице

Извините, не знаю как сформулировать запрос поисковикам.

у меня есть обновляющийся файл в html (адресная книга), содержимое которого должно выводиться на одной статической странице. Как это сделать?

Спасибо!

Каким должен быть robots.txt?

Постоянно встречаю сообщения с информацией о robots.txt для WP, но они все разные 😀 Вот и задался вопросом, а что должно быть написано в robots.txt для наилучшей работы блога?

Можно ли установить WordPress на хостиг на платформе Windows

Привет!
У меня хостинг на платформе Windows, сайт написан на ASP.Net. Можно ли повесить на поддомен блог на основе WordPress на такой хост?
Есть ли хоть какие-нибудь варианты
Спасибо

Как обновить WordPress

Подробная инструкция тут (англ): http://codex.wordpress.org/Upgrading_WordPress_Extended

Деактивируете все плагины
переключаетесь на тему default
выходите из админки
Теперь можно приступать к обновлению блога до более новой версии.

Перед обновлением рекомендуется сделать бэкап базы данных (на всякий случай, бэкап — дело святое, не пренебгерайте этим шагом).

Можно также сделать бэкап файлов движка: выкачать все себе на компьютер или просто через ftp переименовать папки и файлы (КРОМЕ ПАПКИ WP-CONTENT), добавив им в имена абракадабру — такой «ленивый» бэкап файлов движка получится :).

Поднатужтесь и вспомните, не делали ли вы каких-либо изменений непосредственно в файлах движка (хаки)? Если перезапишите поверх новыми файлами,то потом прийдется вспоминать в каком файле движка, что и где именно вы меняли. Если не знаете что такое хаки, не берите в голову и читайте дальше:

Помните, что самое ценное в вашем блоге — это база данных и папка wp-content, где хранятся все ваши закаченные файлы, ваша Тема и плагины. Папку wp-content при обновлении вордпресса НЕ УДАЛЯЙТЕ никогда!

Если вы сразу обновляете с очень старой до самой последней версии (например с 2.0.1 до 2.5) — вы делаете это на свой страх и риск, лучше всего обновлять до последней стабильной версии ВП в линейке, а потом переходить на следующую, пример:
2.0.1 —> 2.0.11
2.1 —> 2.1.1
2.2 —> 2.2.3
2.3 —> 2.3.3
2.5 —> 2.5.1

Если вы обновляетесь поэтапно, то после каждого обновления файлов набирайте урл входа в админку своего блога site.ru/wp-admin, вам будет предложено обновить ваш ВП — соглашайтесь и жмите на предлагаемую ссылку. Вордпресс делает некоторые изменения в струкруре базы данных.
В админку входить необходимости нет.
После этого можете обновляться до следующей версии — по все той же схеме.

Как именно обновляться?
Перезаписывайте поверх существующих файлов новые файлы, НЕ ТРОГАЯ ПАПКУ WP-CONTENT

Затем возьмите файл wp-config-sample.php из нового дистрибутива ВП и заполните его по аналогии со своим существующим wp-config.php (лежит в корне вашего вордпресса), естественно переименовав его в wp-config.php. Не забывайте правильно сохранить этот файл — в кодировке utf8 без BOM!

После перехода на новую версию некоторые плагины могут оказаться несовместимы с новой версией вашего вордпресса. Что поделать, такова жизнь 🙂 Об этом нужно позаботиться заранее — найти эти же плагины более новой версии, совместимые с конкретной версией ВП.
Удобнее всего это делать на http://wordpress.org/extend/plugins/
А еще лучше — предварительно установить новую версию ВП на локалхост, загрузить свои плагины и потестировать на совместимость, если вы не готовы проводить опыты на живом блоге.

Сделать дамп (backup) БД и упаковать его. Автоматически

Как сказал один умный человек – дампы (backup) делать надо. Но ручками каждый раз лезть в Базу Данных, или пользоваться плагинами, делающие его в полу-автоматическом режиме – тоже не наш метод. Нам надо сделать, поставить и забыть 🙂

Итак, что для этого необходимо сделать:

1. Скачать скрипт, выполняющий всю работу, написанный на php;
2. Распаковать архив, изменить данные доступа к серверу БД (271, 272 строки) на свои;
3. Создать на сервере директорию, в которой будут храниться наши дампы;
4. Загрузить в неё скрипт, сделать пробный запуск из командной строки (shell) – "/usr/bin/php -q /home/…/mysqldump.php";
5. Если в директории со скриптом появился файл (выполнить команду "ls") вида backup_DBNAME_YYYY_MM_DD_HH_MM.sql.gz – всё работает корректно. Иначе – проверить настройки и убрать символ "@" перед mysql_connect(".. (271 строка, включить показ ошибок и предупреждений);
6. Если директория доступна для просмотра "извне" (директория web-сервера, там, где находиться ваш сайт), для неё необходимо закрыть доступ. Делаем это следующим образом: создаем файл .htaccess в этой же директории со следующим содержанием:

<Files "*.*">
order allow,deny
deny from all
</Files>

7. Теперь дело за малым – поставить скрипт а CronTab вашего сервера. Подавляющее большенство хостеров предоставляют доступ к нему из своей панели управления, иначе можно воспользоваться shell-ом (описание, англ.). Запись должна иметь вид, аналогичной команде, при помощи которой мы запускали скрипт на проверку работоспособности: /usr/bin/php -q /home/…/mysqldump.php

Теперь можно откинуться на спинку стула, и забыть backup-ах Базы Данных.
(источник, комменарии)

Как посчитать количество постов в рубрике

ВП 2.5.1
есть такой код в functions.php:

function mdv_post_count() {
    global $wpdb;
    echo $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish' AND post_date_gmt < '" . gmdate("Y-m-d H:i:s",time()) . "'");
}

но он, гад, считает все опубликованное: и посты, и страницы. Как сделать так, чтобы считал только посты из определенной рубрики?

Массовое изменение статуса записей

Возникла необходимость в изменении статуса большого количества статей. WordPress, к сожалению, не позволяет это сделать быстро, только если заходить в каждую запись и изменять ее статус, а это далеко не лучший способ.

В связи с этим вопрос к пользователя – можете ли посоветовать какое-то решение для массового изменение статуса записей? Может быть есть какой-то плагин или еще что-то… Надеюсь на вашу помощь.

Спасибо за внимание.

Запрет публикации конткртного поста на главной

Нашел темы, где обсуждалось, как запретить отображение на главной постов какой-либо категории.
А как быть если нужно запрещать отображение на главной отдельных постов? Т.е. так что бы они публиковались в рубрику, но не отображались на главной странице сайта, причем, это можно было сделать с постом любой рубрики?

Перенести данные из БД MySQL в WordPress

Идея такая: есть БД на MySQL в которой храниться информация для сообщений, например:

Заголовок
Описание
Фото

Хотелось все это собрать, и перенести в WordPress в виде постов от админа. Не знаю с чего начать, дело осложняется еще и тем, что в БД есть еще информация для комментариев, но как ее привязать к сообщениям пока не понял.

Может кто встречался с подобной или похожей ситуацией, расскажите как пересекаются данные между собой в БД WordPress?

– Как сделать кнопки “Далее” “Назад”

Ребята, кто скажет, немогу найти на форуме, как, при использовании кода <!–nextpage–>, сделать чтобы не высвечивало номера страниц, а были бы просто кнопки "Далее" и "Назад".

Видео уроки – управление блогом wordpress

Видео рассчитано на тех, кто ни разу не пробовал сделать свой сайт и практически не знает даже с чего начинать. Формат: 7 файлов с раширением *.exe
http://rapidshare.com/files/60719732/wp.for.beginner_LUBIMA.RU_.rar

видеоуроки по wordpress от www.mybite.org.ua
http://sonika.ru/trash/upravlenie-saitom.zip (6400 кб)

Таблица из Word’а в WordPress
http://zdorowo.com/?p=8

Пакет уроков для начинающих пользователей WordPress
Четыре урока в одной упаковке
* Пишем новую статью
* Редактируем статью
* Редактируем страницу
* Размещаем фотографию
http://zdorowo.com/?p=9

на англ.: http://ithemes.com/ru/tutorials/

Оптимизация WP для снижения нагрузки на процессор сервера.

Здравствуйте.
Сайт http://dezignus.com (WP ver. 2.3). За сутки 3к-4к уников и 20к-30к просмотров.
Проблема в том, что хостер мой – sweb.ru начал домагиваться меня на предмет того, что мой аккаунт изрядно нагружает процессор их сервака. По их словам нагрузка обычного сайта не должна превышать 50 (безразмерная величина, характеризующая статистическую нагрузку на процессор в течение суток). Мои данные за последнюю неделю (по дням) 102, 108, 137, 91, 85, 111, 122, 85, 96. Выделенный сервак мне пока дорого.

Знатоки, подскажите есть ли способ оптимизировать WordPress?

ps. список установленных плагинов
Adman
Admin Panel Comment Reply
AdSense Logger (уже отключил)
Advanced-Admin-Menus
All in One SEO Pack
Anti-XSS attack (в модификации Макса/maxsite.org )
Bad Behavior
Better Comments Manager
Category Image(s)
Populari Contest
Post Template
Random Posts widget
Share This
Simple Tags
Subscribe To Comments
View Counter
Wordpress Thread Comment
WP Super Cache
wp-Table (лишь раз использовал)
WP-PageNavi
Wordpress Thread

Как текст сделать под катом?

Здравствуйте,
Как сделать публикацию под катом? Подскажите, пожалуйста.
Т.е. Сначала написать анонс, потом такая ссылка "Подробнее", а по ссылке весь текст публикации.

Как узнать количество запросов к БД при генерации страницы

Собственно вопрос в названии топика. Буду очень благодарен за ответ )

Запрещаем WordPress модифицировать HTML или JS.

Наверняка многие из вас сталкивались с тем, что достаточно сложно, а иногда просто невозможно вставить в сообщение html или js, потому-что wordpress пытается вставить переносы строки, параграфы и т.д.
Я очень долго с этим мучался и наконец-то нашел решение. решением оказался этот чудо-плагин: http://wordpress.org/extend/plugins/raw-html/

Форум SMF- Simple Machines Forum. Интеграция с WordPress

У кого есть опыт по интеграции данного форума с вордпресс?
Пробовал плагин для интеграции WP & SMF http://wordpress.org/extend/plugins/wp-smf-a-simplemachines-bridge/. Да чёта он уменя нормально активируется, а как настраивать, так молчит…

Перестал отображаться контент

Появилась трабла: не отображается контент страницы, хотя заголовок есть, в редакторе содержимое существует.
UPD: На главной вступительная видна, а вот полностью даже вступления не видно.
UPD 2: А вот если сократить текст – то видно.
Что-то ограничевает кол-во знаков в статье.
UPD 3: Вставил разрыв страниц. Не разорвал, но вывел всю статью…

Anonymous
Отправить
Ответ на: