Плагин AdmitadGoods. О плагине

Плагин написан с использованием ООП, практически везде код, формирующий вёрстку (далее — просмотры), отделён от остального кода (далее, условно, будем называть «программная часть»).

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

1) Укажите токен и выберите площадку с которой будете работать и сохраните изменения

Получить токен сможете в том случае если:

а) В admitad.com добавлена площадка с типом «Веб-сайт»
б) Вы подтвердили владение площадкой
в) Площадка одобрена администрацией admitad.com
г) Площадка подключена к товарным офферам (те, у кого есть товары)

2. Префикс для товаров в URL

domain.ru/admitad_goods/название_товара/
admitad_goods — идентификатор, после которого будет идентификатор товара

3. Префикс для категорий в URL

domain.ru/admitad_category/название_категории/
admitad_category — идентификатор, после которого будет идентификатор вашей категории

Запрещено использовать следующие названия у префиксов категорий и товаров

Эти названия зарезервированы для WordPress. Их все WordPress использует в своих целях.

attachment, attachment_id, author, author_name, calendar, cat, category, category__and, category__in, category__not_in, category_name, comments_per_page, comments_popup, customize_messenger_channel, customized, cpage, day, debug, error, exact, feed, fields, hour, link_category, m, minute, monthnum, more, name, nav_menu, nonce, nopaging, offset, order, orderby, p, page, page_id, paged, pagename, pb, perm, post, post__in, post__not_in, post_format, post_mime_type, post_status, post_tag, post_type, posts, posts_per_archive_page, posts_per_page, preview, robots, s, search, second, sentence, showposts, static, subpost, subpost_id, tag, tag__and, tag__in, tag__not_in, tag_id, tag_slug__and, tag_slug__in, taxonomy, tb, term, theme, type, w, withcomments, withoutcomments, year,

4. Товары, удалённые оффером, при обновлении

Выберите вариант что делать плагину, если оффер удалил ранее загруженны товары

Удалять — удаленные оффером товары удалятся из витрины
Скрывать — удаленные оффером товары останутся в витрине, но не будут отображаться на сайте. По адресу скрытого товара будет код ответа сервера 404 (Особенность WordPress)
Ничего не делать — удаленные оффером товары останутся в витрине

5. Осуществлять поиск

Выберите какой поиск приоритетнее на вашем проекте. Сделать одновременный поиск по постам и товарам невозможно (Особенность WordPress).  

Внимание! После смены префикса товаров и/или категорий вам необходимо перейти на страницу настройки постоянных ссылок и нажать кнопку «Сохранить изменения», иначе новые ссылки не будут открываться. Просто нажать на кнопку.

Как получить англоязычную версию плагина

В настройках системы WordPress выберите версию языка English (United States)

И вы получите интерфейс плагина на английском языке


Системные требования

PHP 5.4+, WordPress 4.4+, curl


Установка плагина

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


Основные файлы плагина

admitad-goods.php

Основной файл плагина. Подключает все остальные файлы, необходимые для работы плагина. Также регистрирует скрипты и стили, нужные для плагина, содержит функции инсталяции и удаления плагина, а также отображение и работа со страницей настроек

curl.php

Класс для более удобной работы c CURL, используется при соединении с сервером обработанных товаров сервером и admitad

Connector.php

Базовый класс, содержащий общий функционал для соединения со сторонними серверами

AdmitadConnector.php

Класс, содержащий функции для работы с сервером admitad

OfferProxyConnector.php

Класс, отвечающий за соединение с сервером обработанных товаров

GoodsDispatcher.php

В данном файле сосредоточены все функции для работы с товарами на уровне базы данных (регистрация новых типов постов и таксономий, формирование запросов, получение и обновление специфических для товаров полей и т.п.).

GoodsAttributesManager.php

Класс для работы с расширенными атрибутами товаров

GoodsEditor.php

Класс расширяет стандартное окно редактирования постов, дополняя информацией о товарах, а также добавляет фильтры по категориям и т.п. к стандартным фильтрам списка постов WordPress

GoodsImporter.php

Отвечает за импорт товаров, на всех этапах, кроме непосредственной записи в базу (для этого управление передаётся в GoodsDispatcher.php)

GoodsSelector.php

Отвечает за вставку шорткодов в редакторе (кнопка соответствующая)

GoodsUpdater.php

Класс, отвечающий за обновление товаров

PluginOptions.php

Работа с настройками плагина на уровне WordPress API. Таже содержит настройки по умолчанию

ShortcodesProcessor.php

Обеспечивает работу шорткода

updateGoods.php

Скрипт для обновления товаров, указываемый в кроне

Ошибки и их решения

Не грузятся изображения товаров. PHP Warning: file_get_contents():

Ошибка встречаетя на VPS/VDS, проверьте логи ошибок, есть ли есть
PHP Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/login/.., то установите allow_url_fopen=1 или обратитесь за поддержкой к хостинг-провайдеру

Не могу обновить плагин из админки WordPress

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

Способ №1. Попробуйте обновить плагин AdmitadGoods не со всеми плагина сразу, а только его, одного.

Способ №2. Возможно, во время обновления плагина, на хостинге, происходит timeout.

Попробуйте в файле .htaccess (в корне сайта) вставить строчку
php_value max_execution_time 100

.htaccess в корне сайта

Вставка php_value max_execution_time 100

Если плагин не обновиться и после этого, то необходимо написать в поддержку хостинга и уточнить блокируют ли они директиву php_value max_execution_time в .htaccess, если да, то необходимо попросить снять блокировку и увеличить время загрузки файлов.

Не работает стандартный поиск по сайту WP. Ищет только среди загруженных товаров

В настройках плагина выберите тот вариант поиска что вам нужен и сохраните изменения

Parse error: syntax error, unexpected T_FUNCTION in .../public_html/wp-content/plugins/admitad-goods/admitad-goods.php on line

Хостинг не соответствует системным требованиям. Системные требования

При активации плагина выдает ошибку
Fatal error: Invalid opcode 153/1/8. in /wp-content/plugins/admitad-goods/widgets/widgets_all.php

Ошибка возникает в следствие того, что eAccelerator (расширение для ускорения работы PHP-кода), не совместим с анонимными функциями. Несовместимость появляется на стадии оптимизации опкода. Подробнее про решение проблемы http://www.koscheev.ru/nazlobu/?n=191

В карточке предложения
Fatal error: Call to undefined function mb_strpos() in /home/login/public_html/shop/wp-content/plugins/admitad-goods/GoodsAttributesManager.php on line 150

В надстройках PHP нужно включить расширение mbstring. Обратитесь к Вашему хостеру, они помогут исправить ошибку

curlErrorMessage => Protocol "https" not supported or disabled in libcurl

Сервер API адмитада работает по протоколу https. У Вас, в настройках curl на сервере этот протокол не включен. Protocols dict, file, ftp, gopher, http, imap, ldap, pop3, rtsp, smtp, telnet, tftp. В результате возникает ошибка curlErrorMessage => Protocol "https" not supported or disabled in libcurl. Обратитесь к хостеру, они помогут исправить.

Fatal error: Call to undefined function get_the_post_thumbnail_url()

Обновите WordPress до последней версии и хостинг должен соответствовать системным требованиям. Системные требования

Виджеты программная часть

widgets/WidgetBase.php

Базовый класс для всех видежтов. Реализует функционал отделения файлов просмотра виджета от программного кода, а также возможность создавать в рамках темы альтернативную вёрстку виджетов

widgets/AdmitadCategories.php

Программная часть виджета категорий

widgets/AdmitadFilters.php

Программная часть виджета фильтров

widgets/widgets_all.php

Включает все файлы виджетов и регистрирует их по хуку

Виджеты, которые не зависят от темы

views/widgets/categories.php

Виджет категорий (категорий, созданных для товаров)

views/widgets/filters.php

Фильтры. Включает в себя для каждого фильтра вспомогательный файл, имя которого начинается с двух подчёркиваний

views/widgets/__priceSlider.php

Фильтр для цен (изначально был со слайдером)

views/widgets/__catAttr.php

Фильтры по доп. атрибутам

views/widgets/__offersList.php

Фильтр по офферам

views/widgets/__vendorsList.php

Фильтр по производителям

Убираем лишние атрибуты/свойства товаров из виджета

Есть задача: убрать атрибуты/свойства товаров из виджетов

Видео-инструкция

1. В стандартной теме плагина

В файле /wp-content/plugins/admitad-goods/themes/admitad2/admitad_widgets/__catAttr.php, где admitad2 — используемая тема

После строчки <?php foreach ($catAttributes as $attr_id => $attr): ?> вставьте

<?php
if ($attr->name == 'category')
continue;

elseif($attr->name == 'subcategory')
continue;

elseif($attr->name == 'Other attribute')
continue;
?>

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

Не забудьте переместить изменения в дочернюю тему

2. В не стандартной теме плагина

Создайте папку admitad_widgets в корне вашей темы

В эту папку скопируйте файл /wp-content/plugins/admitad-goods/views/widgets/__catAttr.php

После строчки <?php foreach ($catAttributes as $attr_id => $attr): ?> вставьте

<?php
if ($attr->name == 'category')
continue;

elseif($attr->name == 'subcategory')
continue;

elseif($attr->name == 'Other attribute')
continue;
?>

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

Альтренативная вёрстка виджетов

Вёрстка виджетов плагина (категории товаров и фильтры) может быть изменена. Перед тем, как начать использовать вёрстку по умолчанию, плагин проверяет, есть ли в папке текущей темы папка admitad_widgets, и если она есть, и там есть нужный файл, будет использована вёрстка из этого файла, а не стандартная. Поэтому, если вас не устраивает стандартная вёрстка виджетов, вы можете скопировать файлы из папки wp-content/plugins/admitad-goods/views/widgets в папку admitad_widgets своей темы и поменять вёрстку. Но соблюдайте следующие правила, чтоб виджеты остались работоспособными:

  • Не убирайте и не переименовывайте <input> использованные внутри виджетов

  • Фильтры по производителям, по магазинам, по атрибутам категорий требую рассчитаны именно на принцип работы чекбоксов, не заменяйте их на input другого типа. Если вы хотите разукрашенные чекбоксы, вы можете сделать <input type=checkbox> с display: none;

  • Текущий “живой” поиск по магазинам и категориям рассчитан на то, что css-пути "#shops-names>li>label” и “vendor-names>li>label”, а также input#vendor-search и input#shops-search существуют

  • AJAX-фильтраяция срабатывает по событию change у элементов .adm-product-filter input[name]

В любом случае, серьезная модификация вёрскти виджетов может потребовать глубоких знаний css, html, или даже частичного/полного переписывания js-кода фильтров. К примеру, небольшая доработка потребовалась и нам в теме admtad1.

Шорткоды программная часть

views/shortcodes/good_common_html.html

Изначальная вёрстка виджетов. Не используется плагином

views/shortcodes/goods-img-bottom.php

товар с картинкой снизу

views/shortcodes/goods-img-pull-left.php

товар с картинкой слева

views/shortcodes/goods-img-pull-right.php

товар с картинкой справа

views/shortcodes/goods-img-top.php

товар с картинкой сверху. Также выводит товар без текста

Типы постов и таксономий

Плагин регистрирует новый тип поста: admitad_goods. Посты этого типа создаются при импорте товаров. Также регистрируется тип таксономии admitad_category. Если вы используете не наши темы, вам необходимо создать для вывода товаров и категорий соответствующие файлы для этого типа постов и этого типа таксономий. Подробности: Иерархия шаблонов WordPress

Вывод характеристик товара

Вывод характеристик товара. Видео-инструкция

Вывод списка товаров на главной странице вашей темы

<?php get_template_part("goods", "list"); ?>

Внутри циклов wordpress, если были запрошены товары (т.е. посты типа admitad_goods) большая часть характеристик товара доступна через переменную $post, наряду со стандартными характеристиками поста, такими как $post->post_title;

Напомню, что циклы wordpress используются при выводе отдельного поста single.php, или, если вы создали в теме специальный файл для вывода товаров - single-admitad_goods.php, архива категории постов archive.php, archive-admitad_goods.php и т.п - см. Иерархию шаблонов WordPress.

Если вы используете свою тему и нужно вывести товары

Если вы НЕ создаете отдельные файлы (single-admitad_goods.php, archive-admitad_goods.php и пр.) для вывода карточки и списка товаров, то необходимо в файлах вашей темы использовать конструкцию

<?php if ($post->post_type === "admitad_goods"): ?>
тут свойство товара
<?php endif; ?>  

Вывод парнерской ссылки

<?php if ($post->post_type === "admitad_goods"): ?>
<a href="<?php echo aurl($post->ID); ?>" target="_blank">Перейти на товар</a>
<?php endif; ?>  

Вывод цены и валюты у не стандартной темы плагина

<?php if ($post->post_type === "admitad_goods"): ?>

<?php echo formatPrice($post->price, ",", " "); ?>
<?php echo $post->currencyId; ?>  

<?php endif; ?>

Карточка товара

Необходимо создать файл single-admitad_goods.php в корне вашей темы

Взять файл можно из наших дефолтных тем и оформить для своей темы

/wp-content/plugins/admitad-goods/themes/admitad2/single-admitad_goods.php
/wp-content/plugins/admitad-goods/themes/admitad3/single-admitad_goods.php

Категории товаров

Необходимо создать два файла taxonomy-admitad_category.php и goods-list.php в корне вашей темы

Взять файл можно из наших дефолтных тем и оформить для своей темы

/wp-content/plugins/admitad-goods/themes/admitad2/taxonomy-admitad_category.php
/wp-content/plugins/admitad-goods/themes/admitad2/goods-list.php

Результаты работы фильтров

Необходимо создать файл archive-admitad_goods.php в корне вашей темы

Взять файл можно из наших дефолтных тем, так же как и примером выше

Результаты работы поиска

Необходимо создать файл search.php в корне вашей темы

Взять файл можно из наших дефолтных тем, так же как и примером выше

Данные поля добавляются плагином к стандартным полям поста, если были запрошены товары или категории товаров (admitad_goods или admitad_category), а также при поиске.

Также поля будут автоматически добавлены и при прямом использовании класса WP_Query для указанных типов постов и таксономий (admitad_goods, admitad_category соответственно). Итак, какие поля становятся доступными дополнительно

$post->post_title

Название товара. Записывается в стандартное поле WordPress для заголовка поста

$post->post_content

Описание товара. Записывается в стандартное поле WordPress для контента поста

$post->price

Цена товара

$post->old_price

Цена без скидки. Для товаров, на которых нет скидки - 0

$post->picture

Картинка товара. Она же уставливается в качестве миниатюры поста товара

$post->vendor

Производитель товара

$post->model

Модель товара

$post->url

URL товара

$post->currencyId

Валюта товара

Реально вы можете найти в переменной $post ещё некоторые поля, но они имеют служебное значение для плагина.

Немного сложнее работать с такими атрибутами товаров, как цвет или размер. Поскольку они для разных товаров, разных офферов сильно отличаются, их импортирование в переменную $post не возможно. Поэтому для работы с ними нужно использовать класс GoodsAttributesManager. Класс является синглтоном, поэтому для начала работы нужно запросить его экземпляр:

$ga = GoodsAttributesManager::instance()

А затем уже можно запросить атрибуты текущего товара:

$attributes = $ga->getAttributes($post->id);

Вызов вернёт атрибуты товара в виде массива объектов. В поле name каждого объекта будет содержаться название атрибута (“цвет”, “размер”, “диагональ” и т.п.), а в поле value - его значение (“чёрный”, “12 дюймов” и т.п.). Конкретные значения зависят от товара и его поставщика, и могут меняться

Пример использования:

<?php foreach(GoodsAttributesManager::instance()->getAttributes($post->ID) as $attr) {

?>       

      <tr>

          <td>

              <?php echo $attr->name; ?>

   </td>

          <td>

              <?php echo $attr->value; ?>

          </td>

      </tr>

<?php

}

?>

Запрос товаров через WP_Query

Товары могут быть запрошены в ручную, как и все остальные посты, при помощи стандартного класса WP_Query. Вы можете использовать также переменные в запросах, добавляя их прямо в конструктор класса:

priceMin

Минимальная цена

priceMax

Максимальная цена

vendor

Имя производителя

offerID

ID оффера (пока можно узнать из базы данных)

goodsAttrs

Формально может быть использован в ручных построениях запроса, на практике это слишком трудоёмко. Но используется при работе фильтров, автоматически

Как уже упоминалось, при запросе через WP_Query дополнительные поля товаров подгружаются из соответствующих таблиц автоматически, и доступны через $query->post или глобальную переменную $post (в зависимости от способа работы с объектом WP_Query) так же, как и стандартные атрибуты поста.

Например,

<?php

$query = new WP_Query(array (

  "post_type" => "admitad_goods",

  "priceMin" => 10,

  "priceMax" => 30

));


var_export($query);

Для генерации партнёрской ссылки на товар следует использовать функцию aurl():

<a href="<?php echo aurl($post->ID); ?>">Перейти на товар</a>

AJAX-фильтры

Для того, чтобы фильтры могли работать через AJAX, контейнер, содержимое которого должно обновляться по ajax должен иметь класс admitad-ajax-updated. Обычно это контейнер, куда выводятся товары

Модификация стандартных тем плагина

Модификация стандартных тем плагина. Видео-инструкция

Создание/Редактирование своего CSS в дочерней теме

Просто (не совсем правильно): сделать свой header.php в дочерней теме, и там прописать подключение стиля как обычно. Низкий приоритет — чтоб css оказался последний в списке.

Сложно (но правильно): создать functions.php, в нём заловить хук wp_enqueue_script с низким приоритетом (например, 100) и из него уже подключить нужный скрипт


В комплект поставки плагина входят 3 темы, которые позволят превратить ваш блог WordPress в интернет-витрину для работы с партнёрами Admitad. Они содержат в себе базовый функционал, который мы сочли необходимым для подобных сайтов. Однако, мы не можем угадать желания каждого пользователя. Если вы хотите модифицировать нашу тему, то лучший путь - это создать дочернюю тему WordPress на её основе.

Почему не стоит модифицировать прямо исходный код темы?

Мы развиваем наш плагин и его обновления доступны через систему автоматического обновления WordPress. Если вы будете вносить правки прямо в код темы внутри плагина, при каждом обновлении будет затирать ваши правки на стандартный код темы. А вот код дочерней темы не пострадает. Как создавать дочерние темы подробно описано в документации WordPress, а также во множестве статей в интернете, например https://wpmag.ru/2013/dochernie-temy-wordpress/ . Исходный код наших тем вы можете найти в папке wp-content/plugins/admitad-goods/themes, которая регистрируется как одна из папок, содержащих темы, при активациии плагина.

Итак, к примеру, вы хотите внести изменения в тему admitad3. ОК, просто создайте в папке wp-content/themes новую папку, с названием, к примеру, admitad3-child, и поместите в неё файл style.css следующего содержания:

/*

Theme Name:   Admitad3 Child

Template: admitad3

*/

Теперь вы можете заменить любой файл нашей темы своим. Просто скопируйте наш файл в свою папку и внесите необходимые правки. Механизм альтернативной вёрстки видежтов также работает.


Описание категории после списка товаров

Рассмотрим реальный пример работы. Задача:

Сделать описание категорий после списка товаров и чтобы при обновлении плагина изменения не затирались стандартными файлами.

Рассмотрим вторую тему, ее адрес относительно корня сайта
/wp-content/plugins/admitad-goods/themes/admitad2

У нас есть описание категории, которое нужно расположить после списка товаров

Код, выводящий описание категории расположен в файле (у остальных тем так же)
/wp-content/plugins/admitad-goods/themes/admitad2/taxonomy-admitad_category.php

Сам код с комментариями

Таким образом легко заметить, что бы описание было после списка нужно строчки с кодом поменять местами что бы было так

Далее необходимо сделать так, что бы при обновлении плагина ваши изменения не затерлись стандартными файлами темы, для этого создайте в папке /wp-content/themes/ новую папку, с названием, к примеру, admitad2-child

Полный путь /wp-content/themes/admitad2-child/

И поместите в неё файл style.css следующего содержания:

/*

Theme Name:   Admitad2 Child

Template: admitad2

*/

В /wp-content/themes/admitad2-child/style.css

Если сделали все как мы описали, то у вас в разделе выбора темы появится новая тема, которую назвали Admitad2 Child

Ее необходимо активировать.

Теперь вы можете заменить любой файл нашей темы своим. Просто скопируйте наш файл в свою папку /wp-content/themes/admitad2-child/ и внесите необходимые правки.

Механизм альтернативной вёрстки видежтов также работает.


Слайдеры и фоновые изображения

Слайдеры и фоновые изображения. Видео-инструкция

Изменить слайдер можно в файле по адресу:

Тема 1 /wp-content/plugins/admitad-goods/themes/admitad1/front-page.php

Тема 2 /wp-content/plugins/admitad-goods/themes/admitad2/front-page.php

Тема 3 /wp-content/plugins/admitad-goods/themes/admitad3/front-page.php


All in One SEO Pack

Что бы SEO настройки отображались при редактировании карточки товара и выводе свойств товаров в заголовок в настройках плагина All in One SEO Pack необходимо указать так:

Теперь, в поле “Товар Формат заголовка”

Вам доступны следующие свойства, помимо стандартных, которые предоставляет сам плагин https://semperplugins.com/documentation/title-settings/

То есть для формирования заголовков у карточек товаров можете сделать конструкцию из свойст товаров

%post_title% %vendor% за %price% %currency% | %blog_title%

Доступные свойства товара

%post_title% Название товара
%price% Цена
%old_price% Старая цена
%currency% Валюта
%vendor% Производитель
%offer% Магазин (оффер)
%model% Модель

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

Внимание! Если вы в ручную делаете заголовок для товара, то он изменит только название товара %post_title%, остальные свойства товара останутся в заголовке.


WP-PageNavi

Официальная документация плагина https://wordpress.org/plugins/wp-pagenavi/installation/

Для того что бы плагин WP-PageNavi заработал в стандартных темах AdmitadGoods нужно в файле goods-list.php который в корне темы вставить строчку

<?php wp_pagenavi(); ?>

Код стандартной пагинации темы можете удалить, оставив только строчку <?php wp_pagenavi(); ?>

Использовать код можно так же в файле taxonomy-admitad_category.php сделав описание категории выше пагинации.

Не забудьте переместить изменения в дочернюю тему

Google XML Sitemaps

Плагин для создания карты сайта в формате XML

Официальная документация плагина https://wordpress.org/plugins/google-sitemap-generator/

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

Шорткоды видео YouTube

Шорткоды видео YouTube предназначены для быстрого и удобного поиска видео на YouTube и размещения их на страницах в виде шорткодов. Существует несколько вариантов внешнего вида шорткодов YouTube:

Список

Карточка

Сетка

Используйте функционал видео шоркоды для разнообразного наполнения вашего сайта, делайте полезное и наглядное описание страниц сайта.

Как получить API Key YouTube

1. Заходим на страницу https://console.developers.google.com выбираем YouTube Data API

2. Создаем проект, даем ему название

3. Активируем

4. Переходим в раздел Credentials из выпадающего списка выбираем API Key

5. Получаем ключ и можем его ограничить

6. Можете дать ему свое название и сохранить

Внимание!
Этот ключ API является неограниченным. Для предотвращения несанкционированного использования и хищения квот, ограничивайте свой ключ, или храните его в сохранности от других.

Наверх