Изменение настроек в файле wp-config.php
Примечание. Если вы решите изменить адрес WordPress и адрес сайта через wp-config.php, то параметры адреса WordPress (URL) и адреса сайта (URL) в панели администрирования будут отключены.
Прежде чем редактировать файл wp-config.php создайте его резервную копию. Есть два метода, которые можно использовать для редактирования файла:
- Скачайте файл с помощью FTP-клиента, а затем отредактируйте его в текстовом редакторе. После внесения в файл необходимых изменений сохраните его и загрузите обратно на сервер.
- Отредактируйте файл в менеджере файлов cPanel.
В приведенном ниже примере мы редактируем файл в Диспетчере файлов cPanel.
Скопируйте и переименуйте файл wp-config.php
Войдите в «cPanel»> «Менеджер файлов«. В корневой папке WordPress найдите файл wp-config.php. Кликните по нему правой кнопкой мыши и выберите пункт «Копировать» .
Задайте имя копии файла wp-config.php и нажмите кнопку «Копировать файл».
Отредактируйте файл wp-config.php
В менеджере файлов кликните правой кнопкой мыши по wp-config.php и выберите пункт «Изменить». В диалоговом окне «Правка» нажмите кнопку «Изменить» .
Файл wp-config.php откроется в редакторе. В верхней части файла добавьте приведенные ниже строки, заменив example.com именем вашего домена. WP_HOME — это путь к файлам WordPress, а WP_SITEURL — это адрес сайта. Нажмите кнопку «Сохранить изменения» и закройте окно редактора.
DEFINE ( 'WP_HOME', 'HTTP: //example.com'); DEFINE ( 'WP_SITEURL', 'HTTP: //example.com');
В нашем примере верхняя часть файла wp-config.php теперь выглядит так:
Проверьте доступность сайта, посетив его главную страницу и войдя в административную панель. Если возникли проблему, загрузите сохраненную копию файла wp-config.php и обратитесь за помощью в службу поддержки хостинга.
Пожалуйста, оставьте ваши комментарии по текущей теме материала. Мы очень благодарим вас за ваши комментарии, отклики, подписки, лайки, дизлайки!
Вадим Дворниковавтор-переводчик статьи «How to change the WordPress home and site URL settings»
Загрузка REST запроса
REST запрос на 90% обрабатывается также как и запрос для фронтенда. Его также начинает обрабатывать файл index.php. Через правила перезаписи (ЧПУ) устанавливается параметр запроса .
^wp-json/?$ => index.php?rest_route=/ ^wp-json/(.*)? => index.php?rest_route=/$matches
Процесс загрузки REST запроса выглядит так:
index.php // определяется константа WP_USE_THEMES wp-blog-header.php // ЯДРО (описано тут https://wp-kama.ru/handbook/wordpress/loading#wpcore-load) require_once dirname(__FILE__) . '/wp-load.php'; // в процессе загрузки ядра создается хук `parse_request` // который срабатывает в функции `wp()` add_action( 'parse_request', 'rest_api_loaded' ); // Установка основного запроса WordPress. // Делает запрос и определяет какая страница загружается. // В момент срабатывания хука `parse_request` управление передается // функции rest_api_loaded(), которая прерывает PHP через die. // См. https://wp-kama.ru/function/wp wp(); // См. WP::main()
Пояснения к работе wp() и хуку parse_request
Функция wp() вызывает метод WP::main(), он делает следующие действия по порядку:
-
Вызывает WP::init().
Этот метод устанавливает текущего пользователя для обычных (не REST) запросов. см. wp_get_current_user().
Позднее (если это REST запрос), на хуке аутентификации rest_authentication_errors авторизованный юзер будет обнулен при неправильном nonce коде. Смотрите:
- rest_cookie_check_errors().
- rest_application_password_check_errors()
-
Вызывает WP::parse_request().
Этот метод устанавливает параметры текущего запроса $wp->query_vars.
-
Запуск REST — rest_api_loaded().
В конце WP::parse_request() срабатывает хук parse_request на котором всегда висит функция rest_api_loaded():
add_action( 'parse_request', 'rest_api_loaded' );
rest_api_loaded() проверяет параметр запроса . Если это REST запрос, то запускается логика REST (логика обработки запросов для обычных страниц тут заканчивается).
-
Устанавливается константа .
-
Запускается REST сервер rest_get_server().
При запуске срабатывает хук rest_api_init. На нём в имеющийся сервер добавляются свои маршруты.
-
Обрабатывается REST запрос WP_REST_Server::serve_request( $route ).
При обработке запроса проверяется доступность текущего маршрута, маршрут обрабатывается, возвращается ответ REST сервера в виде объекта WP_REST_Response.
При обработке запроса срабатывают следующие полезные хуки (в указанном порядке):
- rest_jsonp_enabled
- rest_authentication_errors
- rest_pre_dispatch см. WP_REST_Server::dispatch()
- Работа PHP прерывается через die().
-
Таким образом
За обработку REST запроса отвечает функция rest_api_loaded().
REST запрос выглядит точно также как обычный фронтэнд запрос. До момента установки основного запроса WordPress функцией wp(). В ней как и в обычном фронтэнд запросе устанавливается текущий юзер. Но:
- НЕ устанавливаются заголовки WP::send_headers().
- НЕ происходит основного запроса WP::query_posts().
- НЕ обрабатывается 404 страница WP::handle_404().
- НЕ вызывается файл template-loader.php, который определяет шаблон страницы.
- НЕ работает хук редиректов template_redirect.
Заголовки REST ответа ставит REST сервер, также он делает соответствующий запрос в БД или что-угодно еще.
Архитектура
У Вордпресса интересное устройство. Можно представить, что он собирает ваш сайт из независимых кусков — настолько независимых, что вы удивитесь.
Контент. У Вордпресса есть понятие контента: это текст, картинки, название статей, теги, категории, описания статей и всякие метаданные. Всё это хранится в базе данных и пока что никак не связано с дизайном.
Тема. Отдельно от контента живёт тема — это как бы минипрограмма, которая отвечает за вывод контента. Во сколько колонок он выводится? Как оформляется? Какие стили? Где выводится главная картинка, а где — имя автора? Как устроена навигация по тегам и категориям? Всё это живёт внутри штуки, которую мы называем темой.
База. Всем этим управляет база — собственно, сам Вордпресс. Он отвечает за связь с сервером, технический вывод страниц, создание контента в текстовом редакторе, хранение и резервирование данных, вход по паролю, загрузку и обновление тем и т. д. Это как бы невидимая операционная система вашего сайта. Плюс есть видимая админская панель, через которую вы будете работать над сайтом.
Когда вы ставите чистый Вордпресс, в него уже загружена одна стандартная тема. То есть даже на минималках Вордпресса у вас уже может получиться приличный сайт.
Этап: настройка файла wp-config.php
В дистрибутиве WordPress нет файла wp-config.php, а есть его пример: wp-config-sample.php. Конфиг нужно создавать на основе этого файла, т.е. нужно удалить суффикс ‘-sample’, открыть файл в текстовом редакторе и заменить там следующие строки:
define('DB_NAME', 'putyourdbnamehere'); // Имя базы данных define('DB_USER', 'usernamehere'); // Имя пользователя MySQL define('DB_PASSWORD', 'yourpasswordhere'); // ...и пароль define('DB_HOST', 'localhost'); // 99% эту строку изменять не надо define('DB_CHARSET', 'utf8'); // обычно не изменяется define('DB_COLLATE', ''); // обычно не изменяется
Пояснения каждого параметра:
- DB_NAME
- Имя созданной базы данных.
- DB_USER
- Имя пользователя для WordPress.
- DB_PASSWORD
- Пароль, который вы выбрали для пользователя при создании базы данных.
- DB_HOST
- Имя хоста на котором находится база данных, почти всегда это локальный хост и тут указывается localhost.
- DB_CHARSET
- Кодировка базы данных, почти всегда остается без изменения
- DB_COLLATE
- Тип сравнения символов в указанной в DB_CHARSET кодировке. Чаще всего значение не требует изменений и остается пустым
Ключи аутентификации
Также, обязательно нужно изменить ключи аутентификации. Эти ключи используются в разных местах кода WordPress для защиты от взлома:
define('AUTH_KEY', 'впишите сюда уникальную фразу'); define('SECURE_AUTH_KEY', 'впишите сюда уникальную фразу'); define('LOGGED_IN_KEY', 'впишите сюда уникальную фразу'); define('NONCE_KEY', 'впишите сюда уникальную фразу'); define('AUTH_SALT', 'впишите сюда уникальную фразу'); define('SECURE_AUTH_SALT', 'впишите сюда уникальную фразу'); define('LOGGED_IN_SALT', 'впишите сюда уникальную фразу'); define('NONCE_SALT', 'впишите сюда уникальную фразу');
Префикс таблиц
В принципе этот префикс можно не трогать, все будет работать. Указанный в переменной $table_prefix будет использоваться для всех создаваемых таблиц. Изменение этого префикса уникализирует название таблиц и в некоторых случаях может защитить от взлома или хотя бы создать дополнительные сложности.
$table_prefix = 'wp_';
С версии 2.6 файл wp-config.php можно перемещать на одну директорию. Т.е. если файл находится в каталоге /public_html/wordpress/wp-config.php его можно переместить в каталог /public_html/wp-config.php.
Как подгружается functions.php
functions.php подключается во время инициализации текущей темы, после того, как подключены все функции WordPress и все активные плагины. Опишу коротко хронологию загрузки WordPress, где видно, когда подключаются важные файлы:
index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Подключаются самые базовые функции (подключение к БД $wpdb и система фильтров) // Подключаются базовые фильтры // SHORTINIT: Остановка загрузки, где есть только самое базовое: if ( SHORTINIT ) return false; // подключается вся среда WordPress: базовые функции, фильтры // подключаются must-use плагины, затем срабатывает событие: do_action( 'muplugins_loaded' ); // подключаются активированные плагины, затем срабатывает событие: do_action( 'plugins_loaded' ); // устанавливаются глобальные переменные: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles ... do_action( 'setup_theme' ); // устанавливается текущая тема // подключается файл темы >>>>>>>>>>>> functions.php <<<<<<<<<<<< do_action( 'after_setup_theme' ); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action( 'init' ); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action( 'wp_loaded' ); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона
Процесс загрузки WordPress, и functions.php в частности, хорошо показан на этом рисунке:
Схема загрузки WordPress
Шаг 1: Экспорт данных из WordPress.com
Зайдите на свой аккаунт WordPress.com, а затем – в панель управления блогом. Нажмите на Export в меню Tools.
Таким образом вы попадете на новую страницу, где вас попросят выбрать между бесплатным экспортом и экспортом под руководством.
Выберите бесплатный вариант, нажав на Export. Далее вас спросят, какие данные вы хотите экспортировать. Выберите “All Content” и нажмите на кнопку Download Export File. На ваш компьютер скачается XML файл, содержащий все ваши посты, страницы, изображения, комментарии, дополнительные поля, категории, тэги, навигационные меню и другая информация.
Папка wp-includes
Еще одна папка – это wp-includes, и она довольно большая. wp-includes содержит все те файлы, которые не вошли в описанные ранее папки. Условно говоря, именно благодаря этой папке сайт работает как часы.
Папка так важна, потому что здесь находится большинство файлов WordPress-ядра. Новая инсталляция WordPress содержит 140 различных файлов в главной директории и 14 разных папок (на момент написания статьи), включая сертификаты, шрифты, js и виджеты.
Но эти подпапки не так важны, как файлы, которые находятся в главной директории, например, functions.php
Этот маленький файл является важной частью ядра WordPress, так как он содержит множество самых разных функций, которые и позволяют WordPress стабильно работать. Например, данные строчки кода – это первое, что вы увидите, если откроете этот файл, и эта функция нужна, чтоб трансформировать данные в другие форматы
/** * Convert given date string into a different format. * * $format should be either a PHP date format string, e.g. 'U' for a Unix * timestamp, or 'G' for a Unix timestamp assuming that $date is GMT. * * If $translate is true then the given date and format string will * be passed to date_i18n() for translation. * * @since 0.71 * * @param string $format Format of the date to return. * @param string $date Date string to convert. * @param bool $translate Whether the return date should be translated. Default true. * @return string|int|bool Formatted date string or Unix timestamp. False if $date is empty. */ function mysql2date( $format, $date, $translate = true ) { if ( empty( $date ) ) return false; if ( 'G' == $format ) return strtotime( $date . ' +0000' ); $i = strtotime( $date ); if ( 'U' == $format ) return $i; if ( $translate ) return date_i18n( $format, $i ); else return date( $format, $i ); }
Другие ключевые файлы – это cache.php (управляет процессом добавления и удаления данных из кеша, а также за отвечает за его закрытие или перезапуск), links.php (функциональность, которая отвечает за ссылки WordPress) и version.php (отвечает за версию WordPress).
Очень надеюсь, что данная статья позволит новичкам получить базовые представления и знания о структуре вашего сайта на WordPress. Согласитесь — не каждому водителю нужно быть автомехаником, но предствлять где в авто находится мотор, а где подвеска, стоит всем кто за рулем. Ну это так, к слову
Когда можно использовать functions.php
Правильное использование functions.php для дочерней темы, активной в данный момент — это допустимый вариант
Но помните, я акцентировал внимание на этом слове «активной»?. Если вы добавляете порции кода, которые будут иметь смысл только в работе с конкретно этой темой, тогда вы можете смело использовать functions.php (в дочерней теме)
Вот несколько примеров, когда это будет уместно:
Если вы добавляете порции кода, которые будут иметь смысл только в работе с конкретно этой темой, тогда вы можете смело использовать functions.php (в дочерней теме). Вот несколько примеров, когда это будет уместно:
- Добавление еще одного файла стилей (.css) для вашей темы
- Изменение длины для анонса записи (post excerpt), чтобы сайт выглядел лучше
- Добавление кастомных шрифтов для текущей темы
- Добавление файла локализации для перевода текущей темы
Другими словами, каждый раз при добавлении или изменении чего-либо, связанного с конкретной текущей темой, вы можете смело использовать functions.php.
Типы страниц и названия файлов
Теперь когда мы понимаем как работает иерархия, давайте посмотрим на все варианты названий файлов, которые WordPress пытается найти при посещении той или иной страницы сайта.
Полная схема для всех видов страниц и подходящих для них файлов выглядит так:
Теперь, я распишу эту картинку, сделаю из неё список страниц сайта и подходящие для них php файлы темы.
Файлы из списка ниже должны находится в папке темы.
- {любое_название}.php (когда используется шаблон страницы)
- page-{urldecode_post_name}.php
- page-{post_name}.php
- page-{ID_записи}.php
- page.php
- singular.php
- index.php
- single-post-{ярлык_записи}.php
- single-post.php
- single.php
- singular.php
- index.php
- {любое_название}.php (для древовидного типа с поддержкой шаблонов. С WP 4.7)
- single-{post_type}-{urldecode_post_name}.php
- single-{post_type}-{post_name}.php
- single-{post_type}.php
- single.php
- singular.php
- index.php
- {начало_MIME_типа}.php
- {конец_MIME_типа}.php
- {начало_MIME_типа}-{конец_MIME_типа}.php
- attachment.php
- single-attachment-{ярлык_вложения}.php (позволяет указать шаблон для отдельной картинки)
- single-attachment.php (тоже что и attachment.php)
- single.php
- singular.php
- index.php
Под началом и концом MIME типа, имеется виду первая и последняя часть MIME типа, разделенная . Например, MIME-тип текстового файла: ‘text/plain’ и значит будет проверяться наличие файл , затем , затем .
Полный список MIME типов смотрите в описании get_allowed_mime_types().
- category-{ярлык}.php
- category-{id}.php
- category.php
- archive.php
- paged.php (если страница пагинации)
- index.php
- tag-{ярлык}.php
- tag-{id}.php
- tag.php
- archive.php
- paged.php (если страница пагинации)
- index.php
- taxonomy-{ярлык_таксономии}-{ярлык_элемента}.php
- taxonomy-{ярлык_таксономии}.php
- taxonomy.php
- archive.php
- paged.php (если страница пагинации)
- index.php
- archive-{ярлык_типа_записи}.php
- archive.php
- paged.php (если страница пагинации)
- index.php
- author-{nickname}.php
- author-{id}.php
- author.php
- archive.php
- paged.php (если страница пагинации)
- index.php
- date.php
- archive.php
- paged.php (если страница пагинации)
- index.php
- 404.php
- index.php
- search.php
- index.php
- front-page.php
- home.php
- index.php
Страница блога появляется, когда для главной выбрана постоянная страница
- home.php
- index.php
Шаблоны встраивания используются когда запрашивается короткая версия статьи для добавления её на другом сайте. Обычно такие URL выглядят так: Встраивания появились в версии 4.5 и позволяют встраивать ваши записи в чужие сайты. См. get_post_embed_url()
- embed-{post-type}-{post_format}.php
- embed-{post-type}.php
- embed.php
Чтобы изменить только контент встраивания, можно в теме создать файл embed-content.php и описать там HTML. Оригинальный HTML находится в файле движка /wp-includes/theme-compat/embed-content.php
/uploads — медиафайлы и загрузки
WordPress хранит загруженные файлы в папке . Эта директория не существует в дистрибутиве WordPress по умолчанию. Она создается при первой загрузке файла в WordPress. Отдельное создание необходимо, потому что эта папка может быть перемещена в другое место (см. ниже)
По умолчанию WordPress хранит загрузки в папках по годам и месяцам:
Перед тем как можно будет загружать какие-либо изображения или файлы в WordPress, на сервере необходимо разрешить создание папок в директории . При загрузке первого изображения WordPress автоматически создает директорию и необходимые поддиректории в ней. После того как первый файл загружен, верните права для /wp-content обратно, обычно 755. Некоторые серверы сразу позволяют скрипту создавать папки и файлы.
Директория uploads должна иметь все права, чтобы в ней можно было свободно создавать и удалять файлы, обычно это права 777.
WordPress НЕ умеет распознавать и импортировать в админку изображения загруженные в uploads напрямую (не через админку). И в библиотеке файлов WordPress такие файлы не отображаются — WordPress о них ничего не знает.
uploads в Multisite
В Multisite установке для основного сайта фалы загружаются как обычно. А для всех дополнительных сайтов, создается папка , где 2 — это ID сайта сети.
Так для каждого сайта создается папка с его ID в папке . Далее файлы также располагаются в папках по году и месяцу.
Такой подход позволяет разделить загрузки для каждого сайта и упрощает их обслуживание.
До версии WP 3.5 файлы дополнительных сайтов располагались не в , а в .
Так например, директория для сайта с ID 3 выглядит так:
- WP 3.5 и выше:
- WP 3.4 и ниже:
Перемещение папки uploads
Чтобы переместить папку нужно определить константу UPLOADS в wp-config.php так:
define('UPLOADS', 'uploads'); // значит что папка uploads должна лежать в корне сайта
Или можно изменить опции: и в таблице опций (см. update_option()).
Перемещать папку не рекомендуется, об этом я писал в статье: Баг с перемещением папки uploads.
Загрузка Админки
Админка WordPress никак не связана с «корневым» файлом index.php. Вся её загрузка начинается с файла wp-admin/admin.php.
Первое и главной что там происходит — это определяется константа WP_ADMIN, которая говорит всему коду который выполняется потом, что мы находится в админке.
wp-admin/admin.php // определяется константа WP_ADMIN define( 'WP_ADMIN', true ); // ЯДРО (описано выше) require_once dirname(dirname(__FILE__)) . '/wp-load.php'; // проверяется необходимость Апгрейда WordPress // подключаются файлы (дополнительные функции) админки require_once ABSPATH . 'wp-admin/includes/admin.php'; // Проверяет авторизован ли пользователь, перед тем как допустить его на любую страницу // если прав недостаточно, то юзер «улетит» на страницу авторизации auth_redirect(); // хук админки do_action( 'admin_init' ); // устанавливается данные текущей страницы set_current_screen(); // шапка require_once ABSPATH . 'wp-admin/admin-header.php'; // контент - тут логика разветвляется и контент загружается // либо от плагина // либо никакой (если это запрос импорта данных) // либо родные файлы адмники, например, wp-admin/options-general.php // подвал include ABSPATH . 'wp-admin/admin-footer.php';
Установка заголовков перевода
Первый шаг к тому, чтобы сделать плагин переводимым, будет заключаться в добавлении заголовков перевода в заголовках плагина.
Заголовки перевода — это Text Domain и Domain Path.
Text Domain используется для обозначения всего текста, принадлежащего плагину.
Это уникальный идентификатор, который обеспечивает WordPress возможность различать все загруженные переводы. Это позволяет сохранять компактность файлов и обеспечивает лучшее взаимодействие с уже существующими инструментами WordPress.
Text Domain должен совпадать со slug плагина. Например, если ваш плагин представляет собой один файл, который называется sample-plugin.php, или он содержится в папке sample-plugin, то Text Domain должен быть sample-plugin.
Что такое Вордпресс
WordPress — бесплатный движок сайта, который позволяет создавать страницы без знания HTML-кода. Сейчас это самая популярная платформа для сайтов в интернете. Благодаря своей популярности она обросла бесконечным количеством надстроек и возможностей, поэтому сейчас на Вордпрессе можно сделать ВСЁ.
Причина такой популярности — в бесплатности, открытом коде и плагинах. Вордпресс — система с открытым исходным кодом, а это значит, что каждый может посмотреть, как она устроена, и использовать её для своих целей. Благодаря этому программисты поняли, как работает Вордпресс, и сделали для него множество тем и плагинов.
Вордпресс — это движок, или, по-заморскому, CMS, Content management system. По сути это большая программа на PHP, которая умеет хранить и выводить ваши материалы в каком-то дизайне. Грубо говоря, вы пишете статью и сохраняете её в Вордпрессе, а уже Вордпресс беспокоится о вёрстке, оформлении, навигации, оптимизации для поисковиков и всём остальном.
Работая в Вордпрессе, вы не обязательно должны знать код, программирование и стили — система может взять всё это на себя. Но если вы всё это знаете, у вас в руках будет более тонко настраиваемый инструмент.
Многим нравится Вордпресс потому, что за него не нужно платить — это тоже плюс открытых исходников. Его можно легально устанавливать и использовать для своих нужд: от сайта-визитки до корпоративного портала.
Наш журнал «Код» тоже работает на Вордпрессе, но не из-за бесплатности, а потому что Вордпресс довольно легко поддерживать: почти для всего есть готовые плагины, а встроенные инструменты Вордпресса надёжны и хороши.
Поставить себе Вордпресс несложно: большинство хостингов предоставляют такую услугу бесплатно, а на остальные он ставится вручную. Как это сделать самому — расскажем в одной из ближайших статей.
Протестируйте свой сайт WordPress #Протестируйте свой сайт WordPress
Найдите время, чтобы взглянуть на сайт, прежде чем менять его и выяснять, как все это работает
Важно увидеть, как устроена тема WordPress Twenty Twenty и как она работает. Считайте это тест-драйвом, прежде чем начинать добавлять другие функции
Макет, который вы смотрите, определяется темой WordPress. Это вашего веб-сайта, стилизация внешнего вида сайта и оформление содержимого. Тема WordPress Twenty Twenty имеет верхнюю часть с заголовком и слоганом для вашего сайта. Справа находится ваше меню, если оно у вас есть. Основная средняя часть страницы — это область содержимого.
Прокрутите страницу вниз и обратите внимание на заголовки и ссылки. Это «подвал»
Различные элементы на нем называются виджетами. Так же виджеты могут распологаться на боковой панели (если тема ее поддерживает). В самом низу написано: «Сайт работает на WordPress».
Продолжим нашу экскурсию
Пока у вас только одна запись. Она находится на странице, которая является вашей домашней или главной страницей. Если вы нажмете на заголовок записи, вы перейдете на саму запись. На первой или домашней странице вашего сайта представлены самые последние записи на сайте. Каждый заголовок записи будет ссылаться на полную версию. Некоторые дизайнеры тем создают свои отдельные страницы запесей, чтобы они выглядели иначе, чем домашняя страница.
В отдельной записи обратите внимание на макет и на то, чем отличаются элементы дизайна. Заголовок другой? Меньше, больше или другого цвета? Есть ли боковая панель?. Все эти изменения создаются из нескольких файлов, называемых шаблонами
Вы можете узнать больше о том, как они работают, в Руководстве разработчика тем. А пока давайте посмотрим, как работает остальная часть WordPress
Все эти изменения создаются из нескольких файлов, называемых шаблонами. Вы можете узнать больше о том, как они работают, в Руководстве разработчика тем. А пока давайте посмотрим, как работает остальная часть WordPress.
Обсуждение и комментарии
- Создание сообщества
- WP не YMCA, но он действительно помогает создавать сообщества вокруг блогов при помощи комментариев, trackback и pingback систем. Помогая вам поддерживать связь с аудиторией и укреплять дружеские отношения.
- Разрешённые html теги
- Не у всех есть благие намерения, поэтому следует ограничивать использование некоторых тегов. По умолчанию HTML-теги разрешены. WordPress умная система, которая позволит людям использовать HTML в своих комментариях не ставя под угрозу безопасность ваших данных или данных сервера.
- Модерирование
- WordPress предоставляет варианты контроля
- комментариев перед добавлением их в блог.
- использование специфических слов в них.
- IP адреса с которых можно отправлять комментарии.
- количество ссылок в комментарии.
- Все эти опции помогают сдерживать спамеров и прочих нехороших людей.
- Уведомление
- WordPress может оповещать вас о новых комментариях или комментариях ожидающих модерации.
Шаг 3: Импорт контента на независимый сайт WordPress
Чтобы импортировать ваш старый контент с WordPress.com на новый сайт, вам нужно нажать на Tools > Import в панели управления сайта WordPress.org.
Далее – нажмите на WordPress. Вас попросят установить плагин WordPress Importer. Когда вы установили этот плагин, активируйте и запускайте его. Вас попросят загрузить ваш XML файл, который вы скачали ранее.
Примечание: если ваш файл больше, чем 2MB, у вас есть два варианта. Первый – попросить вашу веб-хостинговую компанию временно увеличить лимит загрузки, чтобы вы могли завершить этот процесс. Второй вариант – разбить ваш файл с помощью WXR file splitter.
Когда вы начнете импортировать, у вас появится возможность передать права на старый контент существующему пользователю, или создать нового. У вас также будет возможность импортировать старые вложения (обязательно отметьте этот бокс, чтобы импортировать ваши изображения).
Загрузка Text Domain
Чтобы WordPress загружал файл перевода, если он существует для языка пользователя, мы можем использовать функцию load_plugin_textdomain() function.
Ниже приведена структура данной функции:
<?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?>
Первый параметр $domain должен представлять text domain; $abs_rel_path — устаревший параметр и его значение должно быть установлено на false; и последний параметр $plugin_rel_path — относительный путь к файлам перевода.
Если MO-файлы перевода находятся в папке плагина, используется следующий код:
load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );
Если MO-файлы перевода находятся в папке языков плагина, используется следующее:
load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
Вы не просто вызываете функцию load_plugin_textdomain, она должна вызываться в вашем плагине, тогда же, когда вызывается действие plugins_loaded, следующим образом:
function load_plugin_textdomain() { load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); } add_action( 'plugins_loaded', 'load_plugin_textdomain' );
Папка Themes
Так же, как и в случае с плагинами, каждая тема имеет собственные подпапки. Если мы откроем папку с любой темой, то увидим там множество PHP-файлов, которые все вместе создают внешний вид и структуру вашей темы. Возьмем знаменитую тему Divi от Elegant Themes в качестве примера, в главной папке которой мы найдем файлы 404.php, a functions.php, a sidebar.php, и style.css, среди остальных. Divi также имеет отдельные папки для css, картинок и js темы, что весьма стандартно для большинства качественных тем. Но, как бы то ни было, некоторые другие папки достаточно уникальны, к примеру, epanel и et-pagebuilder:
Уточнение по Text Domain
В text domain должно использоваться тире, и недопустимо использование подчеркивания.
Помните, я сказал, что text domain должен соответствовать slug плагина? На самом деле это не совсем так. Я провел небольшой эксперимент с одним из моих плагинов, вместо slug плагина, я использовал уникальный текст, и он работал без проблем.
Вывод: обеспечьте уникальность Text Domain, так чтобы он не конфликтовал с другими плагинами.
Domain Path — это папка, в которой WordPress будет искать файлы перевода .mo.
По умолчанию, WordPress ищет файлы переводов в корневой папке плагина. Однако размещение файла перевода в корневой папке может дезорганизовать структуру плагина.
Если вы хотите хранить файлы перевода в другой папке, например: /languages, необходимо сообщить об этом WordPress, используя заголовок Domain Path.
Ниже приводится стандартная шапка плагина WordPress, в том числе и заголовков перевода:
<?php /* Plugin Name: Enable Shortcode and PHP in Text widget Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ Description: Enable shortcode support and execute PHP in WordPress's Text Widget Author: Agbonghama Collins Version: 1.2 Author URI: http://w3guy.com Text Domain: espw-plugin Domain Path: /languages/ */
Ошибки в functions.php при вставке кода
Неоднократно встречал вопросы об ошибках, вроде: «После установки кода в файл functions.php сайт перестал работать — белый экран. Что делать?». Я и сам с подобным сталкивался когда-то.
Для меня некоторые решения этой проблемы, долгое время, оставались загадкой — вроде ничего не делал, и даже танца с бубном не было, но — раз и все заработало. Почему так происходит? Давайте рассмотрим возможные ситуации из-за которых может «ломаться» сайт и их объяснение:
-
Вставляете готовый код — сайт перестает работать.
- Редактируете functions.php — сайт перестает работать.
Чаще всего, дело в открывающем и закрывающем тегах PHP <?php и ?>. Обычно, если вставляемый код имеет в начале и в конце эти теги, то их нужно удалить. Также, файл functions.php не должен выводить на экран никакой текст (HTML код или другой контент). Вывод текста допускается только внутри функции, которые в дальнейшем будут использоваться в шаблоне или которые прикрепляются к хукам (подробнее см. ниже).
Нельзя допускать никаких символов до <?php или после ?>, в том числе невидимые символы (перенос строки), потому что functions.php подключается до установки http заголовков (в таких заголовках передаются различные данные, например, что это html документ; что кодировка utf-8 другое). По правилам PHP, контент должен выводится на экран после того, как отправлены заголовки. А все что за пределами <?php и ?> это и есть контент — текст выводимый на экран, даже невидимый символ \n. Поэтому такой текст вызывает ошибку.
Заключение
Одна из задач WordPress — обеспечить пользователям по всему миру возможность легко публиковать свой контент. Как разработчик плагина, вы можете упростить для пользователей процесс публикации с помощью интернационализации плагинов.
В первой части этой статьи я, по сути, рассказал вам все, что вы должны знать об интернационализации плагинов.
В заключительной части приведено пошаговое руководство того, как сделать плагин готовым к переводу. Также вы узнали, как локализовать плагин.
Я надеюсь, вы почерпнули из этой статьи много интересного.
Удачи всем!
РедакцияПеревод статьи «WordPress i18n Make Your Plugin Translation Ready»