Обновление 3.5.1

Исправлена ошибка в результате которой при изменении состояния товара «есть в наличии»/»нет в наличии» или «видимый»/»невидимый» в процессе автообновления из текста полного описания товара удалялись теги iframe (с помощью которого вставляются видеоролики с youtube). Если вы добавляли в описание видео — проверьте страницы товаров.
Бесплатной Basic-версии это не касается, т.к. ошибка возникает только в процессе автообновления (которого в Basic версии нет), при чем только при изменении состояния товара.

Обновление 3.5.0

В шорткод [p_products] и пользовательскую функцию papi_get_products() добавлена возможность указывать id товарных тегов. Работает аналогично параметру cats только выбирает не из каталога, а по тегам. При этом cats и tags могут работать одновременно (логическое «И»).

Обновление 3.4.0

Добавлен фильтр вывода страницы подтверждения заказа confirm_order.

С помощью данного фильтра, например, можно добавить отслеживание продаж ЯндексМетрики.
Для этого поместите в functions.php текущей темы такой код:

add_filter( 'confirm_order', 'add_metrika_code', 10, 3);
function add_metrika_code( $html, $order_id, $cart ){

    $metrika = '<script type="text/javascript">';

    $total = 0;
    $goods = '';

    foreach ( $cart as $post_id => $quantity ){
        // название товара
        $name = get_the_title ( $post_id );
        // цена товара        
        $price = papi_get_price ( $post_id );
        // обозначение валюты из настроек
        $currency = papi_get_curr();

        $sum = $price*$quantity;
        $total += $sum;

        $goods .= '{id:'.$post_id.','
               .  'name:'.$name.','
               .  'price:'.$price.','
               .  'quantity:'.$quantity.'},';
    }   

    $metrika.= 'var yaParams = {
                                order_id: "'.$order_id.'",
                                order_price: '.$total.',
                                goods: '.$goods.'
                    };';

    $metrika.= '</script>'; 

    return $metrika.$html;
}

Обновление 3.3.0

  1. В прайсах для ЯндексМаркет и Маркетгид теперь выводится 10 фотографий товара, а не только заглавная
  2. Изменена выгрузка для ЯндексМаркет с формата vendor.model на упрощенный
  3. Использование временных файлов для хранения данных в процессе автообновления

Обновление 3.2.0

  1. В системе пакетной загрузки товаров изменена настройка действия с дублями.
    Ранее это был чекбокс «Пропускать товары, которые уже есть на сайте»
    Теперь это радиокнопка
    doubles
    Настройка позволяет как и раньше пропускать дубли и публиковать дубли, помимо этого теперь можно сразу удалять дубли в корзину (помещенные в корзину товары более не будут попадать в файл пакетной загрузки товаров и в таблицу полуавтоматического добавления)
  2. Для функции papi_get_products() и шорткода [p_products] при выводе товаров по заданным id, добавлена возможность выводить товары в том порядке, в котором они перечислены в параметре ids.
    Примеры вызова:
    papi_get_products(3, '1773,1677,1741', '', 0);
    [p_products limit=3 ids=1773,1677,1741 cats= rand=0]
  3. Добавлен фильтр price_product_descr для управления описанием которое попадает в xml-прайсы для яндекс маркет и маркетгид.
    Фильтр использует 2 параметра — краткое описание (из специального поля в карточке товара) и id поста (товара).
    Пример:
    Если не заполнено спец. поле описания для прайсов, взять описание товара, вырезав вставленные плагином картинки:

    add_filter( 'price_product_descr', 'my_product_descr', 10, 2);
    function my_product_descr( $xml_descr, $post_id ){
        $descr = $xml_descr;
        if ( !empty($descr) ){
            return $descr;
        }
        $descr = get_post_field('post_content', $post_id);
        $descr = apply_filters('the_content', $descr);
        $descr = preg_replace('/<div[^>]+as_img.*?<\/div>/isu', '', $descr);
        $descr = preg_replace('/<div[^>]+as_images.*?<\/div>/isu', '', $descr);
        return $descr;
    }
    
  4. Зарезервировано время 00:00. Чтобы автообновление не запускалось установите время запуска на 00:00.

Обновление 3.1.1

  1. Исправление в модуле автоматического распределения новых товаров по каталогу (на каталогах с большим количеством разделов товар мог попасть не только в свой, но и в другой раздел)
  2. 404 для страниц с неправильным url (см. #75)
  3. Снижено потребление памяти в процессе автообновления
  4. Добавлен служебный скрипт cron_docatalogue.php, который позволяет на основе загруженных выгрузок Апишопса, автоматически создать дерево каталогов с настроенной привязкой для автоматического распределения новых товаров. (только для Premium)

    Для запуска скрипта необходимо:

    • Убедиться, что в папке xmldir есть выгрузки Апишопса (файлы типа site_12345.yml)
    • Подключиться по ssh
    • Перейти в папку плагина (wp-content/plugins/p-api-shop)
    • запустить скрипт командой
      php5 cron_docatalogue.php > xmldir/cron_docatalogue.log 2>&1

    Обновлена страница инструкции по созданию каталога.

  5. Добавлен фильтр title_for_new_product для названий товаров добавляемых в автоматическом и полуавтоматическом режимах.
    Использование фильтра:

    add_filter( 'title_for_new_product', 'my_fix_title');
    function my_fix_title( $title ){
        // здесь можете изменять значение $title
        // например, удалить цифровые коды, 
        // заменить какие-то фразы на аббревиатуры, 
        // привести к единому виду единицы измерения и пр.
        return $title;
    }
    

Обновление 3.0.0

  1. Добавлены кросселы
    Для любого товара можно указать список id связанных с ним товаров и именно они будут отображаться в блоке «С этим товаром также покупают». Если id не заданы, будет как и раньше отображаться блок «Самые популярные товары».
    Вывод кросселов осуществляется с помощью пользовательской функции papi_get_crossells()
    Если вы используете модифицированный шаблон страницы товара, то для отображения на сайте блока с кросселами необходимо внести в него следующие изменения:
    Найдите блок, похожий на этот:

    <div class="top-sales">
        <h4>Самые популярные у наших посетителей товары</h4>
        <?php echo papi_get_products(4); ?>
    </div>
    

    И замените его на такой:

    <?php
    $crossells = papi_get_crossells(4);
    if ( $crossells ){ ?>
        <div class="top-sales">
        <h4>С этим товаром также покупают</h4>
        <?php echo $crossells; ?>
        </div>
    <?php 
    }
    else { ?>
    <div class="top-sales">
        <h4>Самые популярные у наших посетителей товары</h4>
        <?php echo papi_get_products(4); ?>
        </div>
    <?php } ?>
    
  2. В список товаров для наглядности выведено значение id товара на сайте (как раз его и нужно указывать в кросселах и апселах)
  3. Добавлена возможность автоматического распределения товаров по каталогу в процессе пакетного и полуавтоматического добавления товаров.
    Для этого нужно привязать к разделу сайта раздел(ы) каталога Апишопс — внести его(их) id в специальное поле в настройках каталога. После этого новые товары из указанных разделов АШ будут автоматически добавляться в этот раздел каталога.
    При этом ваш каталог по-прежнему полностью независим от структуры каталога Апишопс, можете делать его каким хотите.
  4. Добавлен фильтр состояния добавляемого товара ‘new_product_status’
    По умолчанию всем добавляемым товарам присваивается статус «ожидает утверждения»
    С помощью данного фильтра можно сделать так, что добавляемые товары сразу получат статус «опубликован»

    add_filter( 'new_product_status', 'publish_them_all');
    function publish_them_all( $status ){
        return 'publish';
    }
    
  5. Добавлена возможность загрузки товаров на сайт из автоматически созданного файла bulkadd.txt внешним вызовом (например через cron).
    Это позволяет:

    • Обрабатывать файлы с большим количеством товаров, не упираясь в ограничения вебсервера
    • Полностью автоматизировать процесс добавления новых товаров на сайт (см также пп.3,4)

    В задаче cron вызывайте файл cron_addnewproducts.php
    Важно: крон должен работать от пользователя под которым работает вебсервер.

  6. Добавлена возможность скачивания xml-файлов по cron-расписанию и чекбокс для предотвращения скачивания xml-файлов в процессе автообновления.
    Скачивание xml-файлов отдельным процессом ускорит работу системы автообновления.
    В задаче cron вызывайте файл cron_getxmls.php
    Важно: крон должен работать от пользователя под которым работает вебсервер.
  7. XML-файлы теперь по умолчанию скачиваются из кэша Апишопс
    Чтобы перед скачиванием гененрировать новый xml используйте фильтр ‘get_xml_url’ (не делайте этого, если работаете с проектами более 1000 товаров или если к плагину подключено много проектов)
  8. Удален чекбокс обновления xml-файлов перед началом пакетной загрузки товаров
  9. Теперь отчет работы системы автообновления приходит на почту только в том случае, если его размер менее 1 мб.
    Если же размер отчета превышает 1мб, то будет выслано только уведомление о том, что скрипт работал, подробности можно посмотреть в админке, по ссылке на странице автообновления.
  10. Добавлены фильтры ‘y_marker_offer_id’ и ‘y_marker_vendor_code’, позволяющие заменить в генерируемом прайс-листе Яндекс-Маркета артикул товара на id товара.
    add_filter( 'y_marker_offer_id', 'my_offer_id', 10, 2);
    function my_offer_id( $articul, $product_id ){
        return $product_id;
    }
    

Обновление 2.5.0

  1. Изменена настройка автоматического включения товаров, которые снова стали доступны
    Ранее товар можно было автоматически вернуть в продажу если он появился на складе Апишопс.
    Теперь можно выбрать один из вариантов:
    startsell
  2. Проверка дублей при пакетном добавлении товаров теперь делается по ID товара
  3. В xml выгрузку для Яндекс-маркета добавлен vendorCode (содержит артикул товара)
  4. Добавлено значение id категории в каталоге Апишопс в автогенерируемый файл пакетной загрузки товаров (bulkadd.txt).
    Значение «справочное», предворяется символом решетки, в загрузке товаров не участвует. Это упрощает создание вспомогательных инструментов для автоматизации процесса распределения товаров по разделам каталога вашего сайта.
  5. Вывод сообщения о доступном обновлении плагина на странице пакетной загрузки товаров
    (такой же блок, как в правой колонке на странице редактирования товара)