Правильный перенос сайта Вордпрес на новый домен

Если вы используете платную тему, в которой есть сложные объекты, то скорее всего они хранятся в сериализованном виде — это когда WordPress перед сохранением в базу, преобразует php-объект в строку и сохраняет её в поле таблицы базы данных. Для считывания, он просто получает эту строку и обратно преобразует в объект PHP.

Все хорошо, но до того момента когда нам надо переносить сайт с локального сервера на боевой. Что бы делаем? Самый примитивный вариант выглядит так: выполняем экспорт базы и в текстовом редакторе заменяем локальный адрес на новый.

Если длина названий старого и нового адреса различна, то при переносе на новый сайт, объекты, которые хранились в сериализованном виде — не будут работать, т.к для успешной десериализации важна правильная длина строки.

Решение

Для правильного изменения адреса в базе лучше воспользоваться специальным скриптом. Называется он Search Replace DB.

Search Replace DB

Выполняем перенос сайта:

  1. Переносим файлы сайта на новое место.
  2. Выполняем экспорт локальной базы, ничего не меняем.
  3. Импортируем в базу нового сайта.
  4. Изменяем настройки сайта в wp-config.php, чтобы сайт смог подключаться к вашей базе.
  5. Качаем архив скрипта и загружаем в корневую папку сайта.
  6. Заходим по адресу, в котором располагается папка со скриптом (например, site.com/Search-Replace-DB) и у нас отобразится интерфейс, где часть данных для подключения к базе уже указана.
  7. Заполняем поля. Вводим старый и новый адреса. Выполняем тестовую проверку, нажав на кнопку dry run. В этом режиме начнётся проверка в каких местах надо заменить адрес. В этом режиме ничего изменено не будет.
  8. Убедившись что все хорошо, можно выполнить замену. Нажимаем кнопку live run.

Σ

Изменение адреса в базе для WordPress-сайта проведено правильно. Настройки плагинов и тем оформления никуда не пропадут.

Перенос записей в Вордпресс

Если нужно перенести не более 2 000 записей с одного WordPress на другой, то никаких проблем не возникнет. Это можно сделать стандартными средствами CMS, но если нужно перенести больше и с другой CMS. Например, с Bitrix или Joomla, то нужен другой подход.

В заметке рассмотрим как перенести большое количество записей в формате CSV на WordPress. Решение подойдёт даже для случая больше 100 000 записей.

Как произвести экспорт записей из старой CMS в CSV-файл — зависит от ситуации, поэтому в заметке об этом не стану говорить. Воспользуйтесь поиском и найдите решение, наверняка до вас это уже кто-то делал. Теперь у вас есть такой файл и поля в нём разделены запятыми (это важно).

Для WordPress есть много плагинов импорта записей из CSV-файлов, но только один из них сработал так, как было нужно. Это плагин Really Simple CSV Importer.

После установки и активации плагина в разделе Инструменты → Импорт появится пункт CSV.

Импорт CSV

Подготовим CSV-файл к импорту в WordPress. В моём случае в первой строке файла хватило 4 основных поля: заголовок, тип записи, дата публикации и текст записи.

"post_title","post_type","post_date","post_content"

Можно добавить ещё одно поле «post_status» со значением «publish». В таком случае наши записи при импорте будут опубликованы с датой публикации из поля «post_date». В моём случае было сложно добавить значение к каждой строке в CSV-файле, но это не проблема. Если поле «post_status» не указано, то все импортируемые записи попадут в черновики.

После этого опубликуем все наши черновики с помощью SQL запроса, который можно выполнить через phpMyAdmin:

UPDATE wp_posts SET post_status = 'publish' WHERE post_status = 'draft'

Теперь наши записи перенесены в WordPress, но не медиафайлы. Наверняка в записях были вставлены изображения. Вручную проверять каждую запись, искать ссылки на изображения и переносить их в WordPress займёт много времени и сил. На помощь приходит плагин Media Tools. После его активации в разделе Инструменты появится новый пункт Media Tools.Импорт медиа файлов

При необходимости настраиваем фильтры импорта, нажимаем «import External Images». Плагин сам загрузит все изображения на сайт и заменит старые ссылки на новые.

На этом всё. Удачного импорта записей!

Двухфакторная аутентификация в Вордпрес

Если у вас есть сайт или блог на WordPress, то его можно обезопасить от взлома. Один из таких способов повышения безопасности сайта — настройка двухфакторной аутентификации. Что это такое?

Двухфакторная аутентификация — это метод идентификации пользователя в каком-либо сервисе (как правило, в Интернете) при помощи запроса аутентификационных данных двух разных типов, что обеспечивает двухслойную, а значит, более эффективную защиту аккаунта от несанкционированного проникновения. На практике это обычно выглядит так: первый рубеж — это логин и пароль, второй — специальный код, приходящий по SMS или электронной почте.

В блоге лаборатории Касперского хорошо описано, что такое двух-факторная аутентификация.

Теперь о том, как подключить её к вашему WordPress-сайту:

  1. Установить и активировать плагин Google Authenticator.
  2. Установить приложение Google Authenticator на ваш смартфон.
    Ссылки на приложение: Android, iOS.
  3. Активируем Google Authenticator в своем профиле WordPress и через QR-код добавляем запись в приложение на смартфоне. Сохраняем изменения.

Настройка плагина Google Authenticator

Теперь давайте проверим работу плагина.

Разлогинимся и зайдем повторно. Для этого используйте сгенерированный пароль из Google Authenticator. Для удобства поставьте галку «запомнить меня», что бы не пришлось каждый раз авторизовываться при входе в админ панель сайта. Но помните, что это следует делать только на том компьютере, доступ к которому имеете только вы. На компьютере в интернет-кафе такое точно не следует выполнять.

Страница авторизации WordPress

Таким образом взломать ваш сайт будет сложнее. Безопасной работы!

IBM Process Designer 8.5: Чтение и запись данных в Coach View

В Coach View среды IBM Process Designer 8.5 взаимодействие с переменными происходит через JavaScript, который разделён на блоки.

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

Интерфейс IBM Process Designer 8.5

В данной заметке опишу работу с входящим бизнес объектом (далее БО) и входящими параметрами. Подключение происходит во вкладке «Переменные», в которых можно указать только один БО и сколько угодно параметров. В БО должны передаваться данные, которые в дальнейшем будем отображать в Coach View, а в параметры передаются данные, которые влияют на отображение информации из БО.

Работаем с чтением и записью данных в IBM Process Designer 8.5

Чтение данных из БО и параметров

Для чтения данных необходимо использовать метод .get(‘value’). Если в интерфейсе, в котором используется ваш Coach View не привязана переменная, которую вы собираетесь прочитать через этот метод, то произойдет ошибка, поэтому читать данные из переменных необходимо следующим образом:

// Чтение БО
var data = this.context.binding ? this.context.binding.get("value") : null;
if (data) {
// ваш код
}
// Чтение параметра
var title = this.context.options.title ? this.context.options.title.get("value") : null;
if (title) {
// ваш код
}

Если вы делаете интерактивный элемент, например таблицу, в которой можно менять значения, то может понадобиться сохранять измененные данные в БО или параметры. С записью данных в IBM Process Desinger всё немного хитрее.

В БО помимо самих данных содержатся свойства о выделенном элементе. Это может пригодиться, если данные отображаются в таблице, в которой можно выбрать строку. БО содержит для этого следующие свойства:

  • listSelectedIndex
  • listAllSelectedIndices
  • listSelected
  • listAllSelected

Для обновления значения выделенной строки можно использовать только свойство listAllSelectedIndices, остальные свойства доступны только для чтения.

Обновить значение можно следующим образом:

var data = this.context.binding ? this.context.binding.get("value") : null;
if (data) {
var index = 0; // Номер выделенной строки
data.set("listAllSelectedIndices" , [index]);
// Обновляем БО
this.context.binding.set("value", data);
}

Запись и обновление данных в БО

Например, необходимо изменить поле в БО. Для обновления данных в IBM Process Designer у сложных БО нужно использовать следующий способ:

var data = this.context.binding ? this.context.binding.get("value").items : null;

Обратите внимание, что при считывании переменной мы сразу обращаемся к массиву items, который содержит объекты с данными (если обратиться к массиву с данными после чтения через .get(‘value’), перезаписать его и обновить БО, то данные не обновятся). Теперь можем изменить значение в БО и сохранить значение:

data[0].name = 'Новое имя';
this.context.binding.set("value", data);

Подробнее о работе с переменными можно прочитать в статье на IBM Knowledge Center: Binding data and configuration options.

P.S.: За время работы на проекте с IBM Process Designer у меня накопился опыт использования этой системы с не совсем очевидным её поведением. О чём и собираюсь писать в ближайших заметках.

Надеюсь информация была полезна для вас, если возникнут вопросы  по среде IBM Process Designer 8.5 или 7.5 — пишите в комментарии, постараюсь подробно на них ответить. До скорых встреч!

Показать скрытые файлы в Mac OS X

Системные файлы в Mac OS X скрыты от пользователей в целях безопасности. Это правильно, но иногда бывают ситуации, когда система принимает пользовательские файлы за системные и тоже скрывает их.
Например, файл .htaccess, необходимый для настройки локального сервера, будет скрыт.

Для того, чтобы показать системные файлы, необходимо выполнить в Терминале команду:

defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder

Как сделаем свое дело, системные файлы можно обратно скрыть:

defaults write com.apple.finder AppleShowAllFiles -bool false
killall Finder

Если кто знает, как показать только .htaccess, то напишите мне в Твиттер, буду благодарен!