Категории: PHP

Управление созданием правил перезаписи URL в плагинах WordPress

Владимир | | PHP, Web разработка, WordPress.

wp rewrite rules

В WordPress входит группа функций, которые позволяют определять собственную структуру URL. К ним относятся add_rewrite_rule(), add_rewrite_tag(), flush_rules() и т.п. Использование этих функций достаточно подробно описано в документации, но у движка есть особенности, которые могут привести к неожиданным проблемам.

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

Для того, чтобы добавить правило нужно:
Читать дальше

WordPress: как получить медленный запрос с помощью метаданных и WP_Query

Владимир | | MySQL, PHP, Web разработка, WordPress.

wordpress search by meta

Запросы к базе данных часто оказываются основной причиной снижения скорости приложения. В некоторых случаях эта проблема имеет объективный характер, но иногда она возникает из-за использования «универсальных инструментов». Тут я сразу хочу оговориться, что в 90% случаев такие инструменты отлично работают и экономят время, но когда снижается скорость, желательно понимать что именно они делают и как исправить ситуацию.

Рассмотрим в качестве примера работу с метаданными в WordPress. Допустим, у каждой статьи на сайте есть несколько атрибутов, например, рейтинг и количество проголосовавших посетителей. Нам нужно создать фильтры, которые позволят выбирать статьи по этим параметрам, т.е. что-то вроде рейтинг – от 3 до 5 и количество голосов – больше 100.

Такую информацию удобно хранить в таблице метаданных wp_postmeta. Это логичное решение, т.к. таблица wp_postmeta связана с wp_posts отношением «многие-к-одному». И мы можем для любой статьи хранить практически не ограниченное количество метаданных. Кроме того, для разных статей можно сохранять собственные наборы полей и это не приведёт к появлению пустых (NULL) значений в таблицах.
Читать дальше

Personal Maps: локализация и интернационализация. Часть 10

Владимир | | AngularJS, JavaScript, PHP, Web разработка, Yii.

personal maps i18n

Приветствую! Это заключительная статья цикла о разработке web приложения с использованием фреймворков Yii и AngularJS. На данный момент у нас есть полностью работающее приложение, и остаётся добавить возможность перевода интерфейса на разные языки.

Примечание. Ссылки на все предыдущие статьи вы найдёте в конце этой страницы.

Вообще создание многоязычного интерфейса – задача довольно тривиальная. В большинство фреймворков (и Yii здесь не исключение) входят соответствующие библиотеки. Но в нашем случае ситуация немного сложнее из-за того, что приложение состоит из клиентской и серверной частей. При этом для обоих фреймворков (Yii и AngularJS) есть собственные средства для работы с переводами.
Читать дальше

Personal Maps: авторизация и аутентификация (с использованием Yii RBAC). Часть 9.

Владимир | | PHP, Web разработка, Yii.

personal maps rbac

В предыдущих статьях этого цикла мы практически завершили создание нашего web приложения (ссылки на предыдущие статьи вы найдёте внизу этой страницы). Мы можем создавать и редактировать объекты, отображать их на карте. Но для полноценной работы приложения нам необходимо создавать пользователей с различными уровнями доступа, а также проверять их права при обращении к приложению.

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

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

  • user – обычный пользователь, может работать только со своими объектами;
  • admin – администратор, может работать со своими объектами, а также создавать, изменять и удалять других пользователей.

Т.е. администратор имеет те же самые права, что и обычный пользователь, плюс несколько дополнительных. Реализовать такую систему разграничения доступа удобнее всего с помощью RBAC (Role Based — Управление доступом на основе ролей).
Читать дальше

Personal maps: REST интерфейс. Часть 8.

Владимир | | Ajax, AngularJS, PHP, Web разработка, Yii.

personal maps rest api

Приветствую, это очередная статья о разработке web приложения с использованием под названием Personal maps. В прошлый раз мы закончили разработку клиентской части приложения, а сегодня займемся созданием REST интерфейса. Ссылки на все предыдущие части вы найдёте внизу этой страницы.

Форматы запросов клиентской части к серверу и его ответов у нас уже определены. Фактически мы это сделали когда тестировали сервис Places. Теперь нам нужно реализовать поддержку этих запросов серверной частью приложения.

Создание REST сервисов с помощью Yii фреймворка

Примечание. Если вы не знакомы с общими принципами создания REST сервисов, то рекомендую прочитать статью Create a REST API with PHP.

Также напоминаю, что исходный код приложения размещён на GitHub и доступна демоверсия приложения.
Читать дальше

Personal Maps: главная страница и структура клиентской части приложения. Часть 3.

Владимир | | Ajax, AngularJS, HTML, JavaScript, PHP, Web разработка, Yii.

В этой части мы начнём разрабатывать клиентскую часть приложения.

Фактически это будет одностраничное приложение, которое получает и передаёт данные с помощью REST сервисов. Основное преимущество такого подхода заключается в том, что при работе пользователя не происходит перезагрузки страницы. Если сервер окажется недоступен, пользователь увидит сообщение об ошибке и сможет продолжить работу, когда связь восстановится.

Кроме того, наше приложение показывает объекты на карте Google, и если его разрабатывать в «классическом» стиле, то переход от одного объекта к другому будет вызывать перезагрузку карты. А это, не смотря на кэширование компонентов карты браузером, негативно скажется на скорости работы интерфейса.

Читать дальше

Personal Maps: Устанавливаем и настраиваем Yii, проектируем структуру базы данных. Часть 2.

Владимир | | AngularJS, MySQL, PHP, Web разработка, Yii.

personal_maps_logo_2

Это вторая часть из серии статей о создании web приложения с использованием фреймворков Yii и AngularJS. В ней мы рассмотрим:

  • установку и предварительную настройку Yii;
  • подключение расширения Yiistrap;
  • структуру базы данных;
  • создание миграций.

Примечание. Вы можете получить исходный код на GitHub, а также поэкспериментировать с демо-версией.

Source

Demo
Читать дальше

Personal Maps: используем Yii и AngularJS для разработки web приложения. Часть 1.

Владимир | | AngularJS, JavaScript, MySQL, PHP, Web разработка.

personal_maps_logo_1

Эта статья первая из цикла о создании небольшого web приложения под названием Personal Maps. Приложение создавалось исключительно в демонстрационных целях, но, в тоже время, оно в полном объёме выполняет свои задачи. С его помощью я хочу показать пример использования нескольких инструментов «в связке», а именно: PHP фреймворка Yii, JavaScript фреймворка AngularJS, базы данных MySQL и Google Maps API.

Первоначально я планировал ограничиваться несколькими более-менее независимыми постами, но затем понял, что такой подход не позволит нормально описать взаимодействие клиентской и серверной части приложения. Более-менее подробное описание по моей приблизительной оценке будет состоять ориентировочно из 10 частей, которые я рассчитываю опубликовать в этом и следующем месяце.

Но уже сейчас код приложения доступен на Github'е. Возможно в него будут вноситься небольшие дополнения и исправления, но ничего кардинального.
Читать дальше

Composer + Yii + Imagine: небольшое приложение для загрузки картинок

Владимир | | PHP, Web разработка, Yii.

yii composer

Совсем недавно фреймворк Yii включили в репозиторий packagist.org. Новость очень хорошая, т.к. теперь можно использовать один менеджер зависимостей Composer для обновления и фреймворка, и дополнительных библиотек.

В этой статье мы рассмотрим пример создания несложного приложения на основе Yii, которое позволит загружать картинки и автоматически создавать их миниатюры. Задача тривиальная, но мне хотелось показать подключение дополнительных библиотек с помощью Composer, а в packagist как раз входит Imagine (очень удобная библиотека для работы с изображениями).
Читать дальше

PHP: как убрать комментарии из html разметки

Владимир | | HTML, PHP, Web разработка, WordPress, Yii.

remove html comments

Прежде всего, несколько пояснений. Допустим, у вас есть html страница с комментариями, которые вы не хотите показывать посетителям сайта. Как их убрать? Естественно, это можно сделать с помощью любого текстового редактора 🙂 Но это не самый лучший вариант 😉

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

С другой стороны, наличие таких комментариев в разметке хоть и немного, но увеличивает размер страницы, да показывать их посетителям как-то неправильно.
Читать дальше