FAQ по WordPress

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

Примеры не совсем обычных циклов (Loop)

чтобы на главной (а можно и в рубриках) верхняя запись выходила не полным текстом, а с аннотацией, ну а остальные записи (которые под верхней, предыдущие) отображались только в виде заголовков.
http://buriduri.ru/23/10/2008/otobrazhenie-zapisej-ne-kak-obychno/

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

рубрика1
—пост
—еще пост

рубрика2
—и еще что-нибудь
—еще один

Читать тут: http://rhymedcode.net/1001-wordpression-loops/grouped-by-category/

Циклы с использованием custom fields (произвольных полей), смотреть последние примеры внизу статьи:

Custom fields в WordPress — примеры продвинутого использования

thumbnail

звение что пост поднимаю еще раз,и пишу заевшую фразу "извените, не смог найти)… н реально не смог найти
вот несколько тем наразных форумах, где этот же вопос поднимался, нотолком ешение проблемы е описано!
http://forum.maxsite.org/viewtopic.php?id=3646
http://mywordpress.ru/support/viewtopic.php?id=3806

о чем там речь (для ленивых)
"я загружаю картинку для поста или страницы и вижу что thumbnail не создается … а сразу же просит поставить сам файл в оригинальном размере. Куда же пропала эта штучка??? От чего это может быть????"

у меня такое же! описываю ситуацю, что было, и как.
переезд сайта,
поиции миниатюра нет.
при заходе в админку/управление/загрузка, под старыми фотками (до переезда) весит меседж
Warning: filesize() [function.filesize]: stat failed for /home/localhost бля бла бла, бла бла бла in бла ла public_html/wp-admin/includes/upload.php on line 42

задал вопрс и здесь (надеюсь что может на новую тему ответят)
во всех топиках про этот трабл описываеться вопроспо gd

у меня
GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

так как доктор прописал! в папке аплоад обновление новых файлов не идет! тоесть thumbnail залитых новых файлов нет… вот как херня малята

О публикации больших, или очень больших публикаций

Встретился мне неприятный момент в публикации больших, или очень больших публикаций. Дело вот в чем. После публикации большого текста ( около 10 стр. в ворде) текст поста просто исчезает. При этом заголовок, теги, категории остаются. Думал, наконец, использовать в полную мощь <!–nextpage–>, но пока видно не судьба ) Тестировано на 2.3.3 и 2.6.2 – одно и тоже.

Може кто встречал такое и победил? Или есть другие способы публикации в больших объемах: брошюр и книжек? :/

Пропал ВИЗУАЛЬНЫЙ РЕДАКТОР

Один из вариантов решения (спасибо WebProffy)

1) Открываем для редактирования файл wp-includes/js/tinymce/tiny_mce_gzip.php

2) Ищем строку (у меня она 87) и заменяем в ней ob_gzhandler на ob_gzhandlerX
было:
if ((in_array(‘gzip’, $encodings) || in_array(‘x-gzip’, $encodings) || isset($_SERVER[‘—————‘])) && function_exists(‘ob_gzhandler‘) && !ini_get(‘zlib.output_compression’)
стало:
if ((in_array(‘gzip’, $encodings) || in_array(‘x-gzip’, $encodings) || isset($_SERVER[‘—————‘])) && function_exists(‘ob_gzhandlerX‘) && !ini_get(‘zlib.output_compression’)

3) Обновляем файл на сервере и радуемся возвращению ТиниМСЕ!

Посмотрите также этот топик:
Я в шоке! пропали панели инструментов.

еще вариант
криво работает gzip

Лезем в файлик /wp-includes/js/tinymce/tiny_mce_config.php
Листаем до строки 173: ‘compress’ => true,
Вместо true пишем false

Вставка ссылки на нужные посты из конца поста

Мне нужнов в конце поста написать что-то типа "Статьи на эту тему" и написать ссылки на статьи которые я бы рекомендовал прочитать. Не при помощи <a href=…></a> в конце поста, а Как-то по-другому. Вот допустим как на этом сайте http://www.businesshome.ru/archives/194, после слова"Рубрика" и до комментариев.

Повторная инсталляция. Пожалуйста помогите

У меня сложилась такая ситуация. Дело в том что у меня есть сайт на базе вордпресса и держал я его у знакомого на хостинге. Но сейчас знакомый вне досягаемости, а срок аренды кончается 12 сентября. Так вот. Я завел новый хостинг указав старый домен перекинул туда резервные файлы сайта, создал базу, прописал в вп-конфиге к бд новые имя и пароль и нажал на инсталл….. И мне выдало что дескать вы уже инсталлировали вордпресс и для новой инсталляции чего то там очистите….. Что делать? Помогите пожалуйста! А то 12 числа закончится срок аренды на старом хостинге и не хотелось бы терять сайт в который я вложил и деньги и душу……

Резервное копирование (backup) сайта на WP

Вопрос простой, касается всех пользователей WordPress, но четких (как, например, в теме "Как обновить WordPress") рекомендаций не нашел. 🙁

Как правильно выполнять резервное копирование сайта на WordPress?
Так, чтобы при потере данных на сервере или при переносе на другой сервер, восстановить все с минимальными потерями.
Как, собственно, восстановить сайт из резервной копии?

Понимаю, что надо сохранить все файлы + база данных. Файлы можно просто скачать по FTP а чем лучше сохранять БД?
"Штатными" средствами (Управление -> Экспорт) или, к примеру, плагином WordPress Database Backup?

Как вывести количество зарегистрированных пользователей

Здравствуйте.
Я хочу вывести на главной странице блога фразу типа "Количество зарегистрированных пользователей: x". Подскажите, пожалуйста, как это сделать? Спасибо!

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

Здравствуйте,

Нужно сделать что бы при добавлении и редактировании поста в админке можно было поставить или убрать галочку в пункте отображение на главной странице, что бы при добавлении галочки посты отображались на главной, а при удалении галочки не отображались. Это должно работать в любой категории. Готов заплатить за ваши труды. Жду ваши предложения на coolbola@gmail.com или стучите в асю 284296

НА чем я спалился – либо советы таким же олухам как я!

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

итак! первое!
мой блог имел сумасшедшую нагрузку на сервак – хостер крыл матами – правда оказались порядочными и не сбросили меня в яму.
запросов к базе было 234, при считающейся нормальной для вордпреса 70.

по совету умнейших людей интересующихся и продуктивно работающих с вордпресом (а именно Миколки), поигрался с выключением установленных плагинов, и в процессе играния обнаружил что отключения плагина Vote It Up (голосования за посты!) – нагрузка упала сразу на 24. плагин конечно полезный (голосование дает возможность оценить пользователям что действительно стоит внимания), но почему эта зараза ТАК ЛУПИТ БАЗУ, понятия не имею. на данный момент ищу аналоги, консультируюсь… будет результат – сообщу (кому интересно это!)

Не проходит авторизация в wp-admin

Установил WP MU 1.5.1
Создал дополнительный блог, потом переименовал его с krasnoyarsk.xxx.ru
в xxx.krasnoyarsk.ru
При попытке войти в админку страница обновляется и в адресе строка ниже

http://eko.krasnoyarsk.ru/wp-login.php?redirect_to=%2Fwp-admin%2F

В главный домен авторизация проходит нормально.

Удалять записи автоматически?

Привет!

Может кто знает plugin или что то в этом роде, чтоб записи стирались или снимались с сайта автоматически по указанному времени. Вставлять записи так можно, а вот снимать нет.

База данных WordPress изнутри

WordPress, как и большинство других современных систем управления контентом, активно использует базу данных. Вся информация хранится в ней – настройки блога, записи, комментарии, ссылки, информация о пользователях и т.д. Поэтому необходимо понимать, как база организована, какие типы данных в ней хранятся, и как разные вещи взаимодействуют друг с другом.
Читать дальше статью База данных WordPress изнутри

wp_list_pages => array()

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

  # подключаем массивы, храняшие настройки, и прописанные в functions.php
  global $portfolioImages, $previewObjectsIDs, $indexPreviewData;
  # локальные переменные тоже оглашаем
  static $i = 0;
  $indexPreviewData = array(); # этот массив будет хранить данные для формирования превью на индексе

  # получаем посты из категории портфолио
  $portfolioPosts = new WP_Query('cat='.$infinePostsCats['portfolio'][categoryId].'&showposts=5&orderby=ID');
  while($portfolioPosts->have_posts()) {
    $portfolioPosts->the_post();
    $indexPreviewData[$i] = array( # пишем и парсим необходимые данные в массив
      id => $post->ID,
      title => $post->post_title,
      guid => $post->guid,
      permalink => get_permalink(),
      liClass => $previewObjectsIDs[$i],
      imageId => preg_replace("/(.*)".$portfolioImages[previewRegular]."(.*)/is", '$2', $post->post_content)
    );
    $i++;
  }

с постами понятно, но со страницами чего-то запарился. ваши мысли, коллеги?

Изчезает заголовок виджета

Что делать. Изчезает заголовок виджета "Календарь". Вчера он еще был, а сегодня нету.
Советы типа "Измени заголовок и впиши по новой" не предлагать.

Спасибо.

Platinum Seo Pack – Это убийца All in One SEO

Мы все так радовались когда появился WordPress плагин All in One SEO, с помочью которого оптимизировать WordPress стало намного легче, чем раньше. Но, умел он не так много: менять Title, работать с META кейвордами, проставлять noindex где это нужно, генерировать Descriptions. Вот в принципе и все, что мог делать All in One SEO.
Этот плагин был “must have”, но теперь вы можете смело его удалять! …и ставить http://techblissonline.com/platinum-seo-pack/. Потому-что он умеет гораздо больше!

Он умеет все, что умеет All in One SEO. Плюс:
1. Добавлять тег nofollow к ссылкам!
2. Работать с RSS – использовать noindex для комментариев и для всего фида в целом!
3. Добавлять мета тег noodp
4. Добавлять мета тег noydir
5. и многое другое 🙂

via http://altblog.ru/platinum-seo-pack-wordpress-plugins/

Исключить категорию (из главной, из фида, не ломая дров)

[SOLVED / Решено]

[quote]Здравствуйте!

Скажите, пожалуйста, как можно исключить посты из определённой категории, чтобы они…
а) не показывались на главной
б) не попадали в RSS
ц) не проматывали остальные посты*

Стандартный метод с continue в Loop-е не подходит, т.к. только решает ситуацию (а).
Нужно ещё, чтобы в RSS не попадал и не "прокручивал" остальные посты.

*Если использовать метод стандартный способ исключения постов определённой категории, то если например на странице по-умолчанию выводятся 10 постов, то после опубликования "исключённого" поста, на главной будет – 9 последних постов. А если опубликуется 10 "исключённых", то главная будет пустая.

Как решить эту проблему?[/quote]

  • Нашёл! Нашёл рабочий плагин, который

а) устраняет записи нужных категорий и тэгов из главной страницы (также может исключить из архива и поиска)
б) устраняет записи нужных категорий и тэгов из общего feed (rss-ленты), а фид категории/тэга остаётся живым
ц) сохраняет количество страниц на главной.
д) плагин работает с 2.5, 2.5.1

Чудо зовётся Simply Ecxlude by Paul Menard.
Ура!

Странно, что этот плагин не смог найти через поиск по плагинам на WP.org, плагин ещё молодой, признания не добился, но из положения меня выручил!

Как встроить сторонний скрипт в вордпресс?

Здравствуйте. Очень надеюсь на совет профессионалов. Второй день бьюсь над проблемой, решить не удается. Руки опускаются:(
Есть сторонний скрипт – калькулятора. Состоит он из нескольких файлов:
form.html – непосредственно файл формы калькулятора
два файла .js (вызываются в header-е form.html)
и скрипт calc.php, – action кнопки подсчета в form.html
Задача: встроить калькулятор в вордпресс.
Мои действия:
1) создаю свой шаблон для страницы calculator.
2) вызываю в нем <?php include (‘form.html’); ?> тело формы (без лишних тегов header, body итп). Форма нормально отображается.
3) прописываю в созданном новом header-е вызов js
Но форма не функционирует. Есть подозрение, что неправильно прописаны пути, уже пробовала прописывать полные пути к файлам, но без толку.
В самой form.html есть строчка вызова cal_exe.php (обрабатывающего скрипта):
<form name="calcForm" action="calc_exe.php" method="POST">

А также <script type="text/javascript">
var formObj = new DHTMLSuite.form({ formRef:’calcForm’,action:’calc_exe.php’,responseEl:’formResponse’});
В IE в строке состояния выдает ошибку – var formObj есть null или не является объектом.

Быть может, проблема в том, что путь надо указывать в таком случае полный, от корневого каталога?
(на всякий случай скажу, что скрипт рабочий, безотносительно вордпресса работает как надо).

Заранее благодарю!

дата поста и дата модификации поста

вывожу дату и дату модификации поста

<?php the_time('d.m.Y'); ?>, обновлено: <?php the_modified_time('d.m.Y'); ?>

однако есть одна проблемка, если пост не обновлялся, то он выдает что-то типа:

17.06.2008, обновлено: 17.06.2008

каким образом не выводить дату обновления, если она совпадает с датой создания поста? пробовал сравнивать даты – получилась ерунда. поих знаний php недостаточно, codex не помог.

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

Итак, вопрос: а нужны ли пачки строк в шапке вида "<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. нечто подобное уже встречал в сети, но на момент написания не нашел.

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