WordPress

Материал из RSU WiKi
Перейти к: навигация, поиск
Tower of babel.png外國 language!
В статье используется несколько языков. Необходимо использовать один. Совсем неплохо, если это будет русский.

WordPressCMS с открытым исходным кодом, распространяемая под GNU GPL. Написан на PHP, в качестве базы данных использует MySQL. Сфера применения — от блогов до достаточно сложных новостных ресурсов и даже интернет-магазинов. Встроенная система «тем» и «плагинов» вместе с удачной архитектурой позволяет конструировать практически любые проекты [1].

Содержание

Установка

Конфигурационный файл Nginx для работы с WordPress через fast-cgi модуль php5:

Скачиваем последнюю версию WP с официального сайта по ссылке:

В конфигурационном файле wp-config.php находим строки, содержащие:

'put your unique phrase here'

и меняем их на случайные последовательности, сгенерированные следующей командой:

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 70| head -n 8

Установка в поддиректорию

Многие люди хотят видеть WordPress в корневом каталоге сайта (например http://example.com), но не хотят, чтобы все эти файлы WordPress загромождали корневую директорию. WordPress позволяет установить файлы WordPress в подкаталог, но блог будет работать в корневом каталоге сайта.

Русификация (изменение языка, перевод)

Для того, что бы русифицировать WordPress или изменить язык WordPress на другой, нужно проделать следующий действия [2]:

На примере русского языка.

  1. Качаем русскую версию WordPress.
  2. В скачанном дистрибутиве в папке wp-content/languages находим все файлы начинающиеся с ru_RU
  3. Копируем файлы из п.2 в блог который нужно перести на русский язык, в ту же папку. Если папки languages не существует, ее надо создать.
  4. В файле wp-config.php нужно найти строчку начинающуюся с define (‘WPLANG’ и заменить строку на define (‘WPLANG’, ‘ru_RU’);

Всё, изменение языка на другой – аналогично изменению языка на русский.

SSL / HTTPS

WordPress 2.6 и более поздние его версии значительно улучшили возможность администрирования через SSL из коробки [3].

To Force SSL Logins

The constant FORCE_SSL_LOGIN can be set to true to force all logins to happen over SSL. This (and all other such definitions) must be placed before

/* That's all, stop editing! Happy blogging. */
...
require_once(ABSPATH . 'wp-settings.php');

in the file, otherwise they will not take effect. Example

define('FORCE_SSL_LOGIN', true);

To Force SSL Logins and SSL Admin Access

The constant FORCE_SSL_ADMIN can be set to true to force all logins and all admin sessions to happen over SSL.

Example

define('FORCE_SSL_ADMIN', true);

Which Should I Use?

FORCE_SSL_LOGIN is for when you want to secure logins so that passwords are not sent in the clear, but you still want to allow non-SSL admin sessions (since SSL can be slow).

FORCE_SSL_ADMIN is for when you want to secure logins and the admin area so that both passwords and cookies are never sent in the clear. This is the most secure option.

Необходимые плагины

  • loginza
  • Restrict Registration
  • Yandex Speller Application
  • WP Super Cache или W3TC
  • WPtouch
  • Smart YouTube PRO
  • WP-SmushIt
  • P3 (Plugin Performance Profiler)
  • translit it!

P3 (Plugin Performance Profiler) полезный плагин, для мониторинга скорости работы сайта. Плагин автоматически сканирует основные страницы сайта и вычисляет, как установленные плагины влияют на скорость работы сайта, делает красивые диаграммы. Очень полезен, когда на сайте установлено более 5 плагинов.

translit it! Автоматически "транслитерирует" ссылки создаваемых страниц и запсей, чтобы в адресной строке не было кириллицы.

Логика работы проста: через модуль "Restrict Registration" разрешаем регистрацию пользователей только со своего домена и отключаем анонимное комментирование. Пользователи смогут оставлять комментарии, авторизовавшись в системе через сервис Loginza. Спама в блоге не будет.

Если свободная регистрация пользователей все же необходима, ставим плагин:

  • User Spam Remover. Automatically removes spam user registrations and other old, never-used user accounts. Blocks annoying e-mail to administrator after every new registration. Full logging and backup of deleted data.

Дополнительные плагины

  • WordPress JetPack
  • NextGEN Gallery
  • Slick Social Share Buttons. Add facebook, twitter, google +1, linkedin, and stumbledupon social media buttons to your website in either a floating or sliding panel.
  • Google XML Sitemaps. This plugin will generate a special XML sitemap which will help search engines to better index your blog.
  • Simple LDAP Login Integrating WordPress with LDAP shouldn't be difficult. Now it isn't. Simple LDAP Login provides all of the features, none of the hassles.

robots.txt

Файл robots.txt – это текстовый файл, находящийся в корневой директории сайта, в котором записываются специальные инструкции для поисковых роботов. Эти инструкции могут запрещать к индексации некоторые разделы или страницы на сайте, указывать на правильное «зеркалирование» домена, рекомендовать поисковому роботу соблюдать определенный временной интервал между скачиванием документов с сервера и т.д.[4]

Оптимизированный файл для WordPress[5]:

User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /trackback
Disallow: /feed
Disallow: /comments
Disallow: /category/*/*
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Disallow: /*?*
Disallow: /*?
Allow: /wp-content/uploads
 
Sitemap: http://example.com/sitemap.xml

Администрирование

Оформление

Ширина между буквами в заголовках

.entry-title,
h1, h2, h3, h4, h5, h6
{
letter-spacing: -0.02em;
}

Стиль меню в подвале

Чтобы меню c id="nav_menu-5" в подвале выглядело как блок Мета, добавьте пользовательский javascript:

$('#nav_menu-5').removeClass();
$('#nav_menu-5').addClass('widget-container widget_meta');

Форма обратной связи с каптчей

Плагин: Contact Form 7

[text* your-name placeholder "Имя*"]
[email* your-email placeholder "Эл. почта*"]
[textarea your-message placeholder "Сообщение"]
[quiz captcha-quiz "Год взятия Бастилии?|1789"]
[submit "Отправить"]

Custom CSS:

.wpcf7 input[type="email"],
.wpcf7 input[type="text"],
.wpcf7 textarea
 {
margin-top: 0px !important;
padding: 7px;
width: 100%;
}
.wpcf7 textarea {
min-height: 40px;
}
.wpcf7-quiz-label {
font-size: 10pt  !important;
}

Как создать боковое меню?

Плагин: Custom Menu Wizzard Задача: боковое меню, отображающее 1 уровень наследников, соседние страницы на том же уровне и всех предков

Как задать права пользователям?

Статья Roles and Capabilities[6]

Плагины:

  • Press Permit Core [7]
  • Capability Manager Enhanced[8]
  • Платный! Press Permit Pro[9]

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

Подписчик, который может редактировать только разрешенные в Editing Exeptions страницы сайта и загружать на них файлы. Эту роль мы будем использовать при создании большинства пользователей.

Автор, который может добавлять, удалять, редактировать все новости (post) и анонсы (news), редактировать все страницы, но не может создавать новые, загружать, редактировать и удалять любые файлы. Эту роль мы будем использовать при создании контент-менеджеров Пресс-службы.

Как добавить возможность редактировать страницу/дерево?

  • На сайте или в меню Страницы > Все страницы выберите искомую и нажмите Редактировать
  • Перейдите в Editing Exeptions > Пользователи
    • Если вы хотите дать пользователю права редактировать только текущую страницу, установите параметр This Страница в Enabled, а Sub-Страницы в (default access)
    • Если пользователю нужно редактировать дерево, установите параметры This Страница и Sub-Страницы в ENABLED
    • Если пользователю больше не нужны эти права, установите параметры This Страница и Sub-Страницы в (default access)
  • Нажмите Обновить

Сброс пароля администратора

UPDATE `wp_users` SET `user_pass` = MD5( 'new_password_here' ) WHERE `wp_users`.`user_login` = "admin_username";

Изменение ссылок, размещаемых в тексте постов

Выборка постов, содержащих хотя бы одно вхождение фрагмента <что ищем> и предварительный вариант тела поста с заменой <на что заменить>:

SELECT LOCATE('<что ищем>',`post_content`) AS `match`, `post_content`,
REPLACE(`post_content`, '<что ищем>', '<на что заменить>') AS `replaced` FROM `wp_posts` HAVING `match` <> '0'

Создание временной таблицы `replaced` на основе предыдущей выборки:

CREATE VIEW `replaced` AS (SELECT `id`, `post_content`,
LOCATE('<что ищем>',`post_content`) AS `match`,
REPLACE(`post_content`, '<что ищем>', '<на что заменить>') AS `new`
FROM `wp_posts` HAVING `match` <> '0');

Запись содержимого тела поста из временной таблицы в основную для записей с совпадающим идентификатором:

UPDATE `wp_posts`, `replaced` SET `wp_posts`.`post_content` = `replaced`.`new` WHERE  `wp_posts`.`ID` = `replaced`.`id`;

Удаление временной таблицы:

DROP VIEW `replaced`;

Как добавить боковое меню на все страницы?

Если тема поддерживает задание конкретной боковой колонки на странице.

Запрос на указание разметки всех страниц с левой боковой колонкой, left-sidebar.

юupdate `wp_postmeta`
set `wp_postmeta`.`meta_value`='left-sidebar'
where `wp_postmeta`.`post_id` in
(
    SELECT `wp_posts`.`ID`
	FROM `wp_posts`
	WHERE `wp_posts`.`post_type`='page'
)
AND `wp_postmeta`.`meta_key`='page_layout'

Запрос на указание конкретной боковой колонки lotus-custom-auto на всех страницах.

update `wp_postmeta`
set `wp_postmeta`.`meta_value`='lotus-custom-auto'
where `wp_postmeta`.`post_id` in
(
    SELECT `wp_posts`.`ID`
	FROM `wp_posts`
	WHERE `wp_posts`.`post_type`='page'
)
AND `wp_postmeta`.`meta_key`='sidebar-id'

Как обновить тему?

Сделайте резервную копию вручную

Скопируйте в папку для бэкапов:

/wp-content/themes
/wp-content/pluguns

Сделайте дамп базы:

mysqldump -u root -p example | bzip2 > example.sql.bz2

Установите новую тему

Attention.pngВНИМАНИЕ!
Перед началом отключите все плагины

Например тема распакована в папку

/usr/local/src/lotus

Удалите существующую папку с темой

/wp-content/themes/lotus

и скопируйте вместо нее новую. Затем включите плагины.

Безопасность

Как отключить XML-RPC функционал?

Чтобы ваш сайт на Wordpress не использовался для DDOS-атаки[10], подключите плагин Disable XML-RPC[11]

Lotus

Как добавит в текст кнопку?

[button link="http://example.com" round="yes" size="large" color="white" flat="no" ]Перейти на сайт example.com[/button]

Миграция сайтов со сторонних CMS на WordPress

Joomla

Для переноса контента с сайта, работающего под управлением Joomla рекомендуется воспользоваться плагином "Joomla to Wordpress Migrator" http://wordpress.org/extend/plugins/joomla-to-wordpress-migrator/

Установка

  1. Распакуйте содержимое архива в папку /wp-content/plugins/;
  2. Активируйте плагин в "Управлении сайтом";
  3. В настройка плагина укажите адрес mysql сервера с базами данный joomla и wordpress, логин и пароль пользователя, имеющего доступ к базам сайтов, адреса сайтов, а также места расположения изображений для обоих сайтов. . Изображения должны быть скопированы в папку /wp-content/uploads/ до миграции;
  4. Нажмите кнопку "Save changes";
  5. Перейдите в пункт "Migration" в меню плагина;
  6. Для переноса контента нажмите кнопку "Start migration to WP";
  7. Для переноса медиаданных нажмите кнопку "Start migration of Media Data to WP";
  8. Для исправления URL-ов контента нажмите кнопку "Change URLs";

Конвертация картинок из data:image/jpeg;base64, в файлы

Импорт БД

mysql --default-character-set=utf8 -u root -p rzn-live < pro_news_utf8.sql

Импорт из БД другого wordpress

Копируем записи из бд it в singularity

INSERT INTO singularity.wp_posts
(post_author, post_date, post_content, post_title, post_excerpt,
post_name, post_modified, post_type, `post_status`)
SELECT `post_author` , `post_date`, `post_content`, `post_title`, `post_excerpt`, `post_name`, `post_modified`, `post_type`, `post_status` 
FROM `it`.`wp_posts` 
WHERE `post_type` = 'post'
AND `post_status` = 'publish'

Результат

Добавлено 355 строк
Конец 8475
Начало 8121

Найдите номер категории постов

term_id 149

Найдите номер таксономии по номеру категории постов

term_taxonomy_id 158

Процедура добавляет всем постам с ID в 8121..8475, используйте найденный номер таксономии 158

DELIMITER //  
CREATE PROCEDURE `p2` ()  
LANGUAGE SQL  
DETERMINISTIC  
SQL SECURITY DEFINER  
COMMENT 'A procedure'  
BEGIN
	DECLARE v1 INT DEFAULT 8121;
	WHILE v1 <= 8475 DO
		INSERT INTO `wp_term_relationships` (`object_id`,`term_taxonomy_id`,`term_order`) VALUES (v1,158,0);
		SET v1 = v1 + 1;
	END WHILE;
END;

Вызвать процедуру

CALL p2();

Удалить процедуру

DROP PROCEDURE p2;

Как ускорить WordPress? Запуск на HHVM

Статья Getting WordPress running on HHVM[12]

Примечания

  1. WordPress. Материал из Википедии — свободной энциклопедии
  2. http://www.wordpresser.ru/rusifikaciya-izmenenie-yazyka-perevod
  3. WordPress Codex: Administration Over SSL
  4. Все о файле robots.txt по-русски
  5. WordPress Codex: Robots.txt Optimization. Search Engine Optimization for WordPress
  6. https://codex.wordpress.org/Roles_and_Capabilities
  7. http://wordpress.org/plugins/press-permit-core/
  8. http://wordpress.org/plugins/capability-manager-enhanced/
  9. http://presspermit.com/
  10. http://habrahabr.ru/post/215543/
  11. https://wordpress.org/plugins/disable-xml-rpc/
  12. http://www.hhvm.com/blog/113/getting-wordpress-running-on-hhvm

См. также

Ссылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты