Disweb Subscription

Организация подписок клиентов для сайта на WordPress

Глобальная переменная $dwSubscription

Данная переменная в себе несет ссылку на объект плагина.

global $dwSubscription;

Возможности:

$dwSubscription->getTarifs(filter) — получить список тарифов

Принимает параметры filter по аналогии с WP функцией «get_posts»

В результате будет объект «WP_Post Object» с доп данными:
price — стоимость тарифа
dw_type — указывает в каком значении параметр dw_count: months (в месяцах) или days (в днях)
dw_count — на какой срок тариф

$dwSubscription->is(user_id) — получить информацию о текущей подписке

Принимает не обязательный параметры user_id. По умолчанию будет возвращать текущего авторизованного пользователя.
При отсутствии подписки возвращает: false

Описание возвращаемых данных:
active — активный тариф: 1 (да) или 0 (нет)
tarif — ID текущего тарифа
date_start — дата начала подписки
date_end — дата окончания подписки
is_pay — оплачена подписка: 1 (да) или 0 (нет)
type — тип подписки: start — первый раз, next — продленная, up — перешла на более дорогую, down — перешла на более дешевую
tarif_next — ID тарифа который будет при продлении подписки
tarif_type — тип срока текущей подписки: months (в месяцах) или days (в днях)
tarif_count — на какой срок тариф
price — стоимость тарифа

$dwSubscription->add(args) — добавить или продлить подписку. При существующей подписке, добавляется срок от завершения даты текущей подписке. Возвращает ID подписки.

Принимает параметры args:

user — ID пользователя, для кого подписка (по умолчанию текущий авторизованный)
tarif — ID тарифа (если при продлении, то по умолчанию берется данный ID из текущей подписки поля tarif_next)
price — указывается стоимость подписки (по умолчанию берется из поля price в тарифе)
days — указывается на сколько дней подписка (указывается либо этот параметр, либо months, по умолчанию берется из тарифа)
months — указывается на сколько месяцев подписка (указывается либо этот параметр, либо days, по умолчанию берется из тарифа)
type — тип подписки: start — первый раз, next — продленная, up — перешла на более дорогую, down — перешла на более дешевую (по умолчанию расчитывается автоматически)
title — наименование подписки (не обязательный, по умолчанию будет: “Подписка на 30 дней; Пользователь: admin (1)»)

$dwSubscription->update(tarif, user_id) — изменение тарифа. поле user_id не обязательное, по умолчанию текущай авторизованный пользователь.

Если тариф дешевле, то у подписки меняеются параметры:
type на down
next — на ID тарифа указанного в первом параметре
Если тариф дороже, то подписка закрывается текущей датой и создается новая подписка до даты текущей подписки с перерасчетом стоимости.

 

Пример $dwSubscription->getTarifs():

global $dwSubscription;
echo '<pre>' . print_r($dwSubscription->getTarifs([
	'numberposts' => 2
]), true) . '<pre>';

Результат:

Array
(
    [0] => WP_Post Object
        (
            [ID] => 440
            [post_author] => 6
            [post_date] => 2021-08-06 15:07:42
            [post_date_gmt] => 2021-08-06 12:07:42
            [post_content] => Описание
            [post_title] => Тариф 1
            [post_excerpt] => 
            [post_status] => publish
            [comment_status] => closed
            [ping_status] => closed
            [post_password] => 
            [post_name] => tarif-1
            [to_ping] => 
            [pinged] => 
            [post_modified] => 2021-08-06 15:07:42
            [post_modified_gmt] => 2021-08-06 12:07:42
            [post_content_filtered] => 
            [post_parent] => 0
            [guid] => https://site.com/?post_type=dw_subscrip_tarif&p=440
            [menu_order] => 0
            [post_type] => dw_subscrip_tarif
            [post_mime_type] => 
            [comment_count] => 0
            [filter] => raw
            [price] => 3550
            [dw_type] => months
            [dw_count] => 12
        )

    [1] => WP_Post Object
        (
            [ID] => 439
            [post_author] => 6
            [post_date] => 2021-08-06 15:06:27
            [post_date_gmt] => 2021-08-06 12:06:27
            [post_content] => Описание
            [post_title] => Тариф 2
            [post_excerpt] => 
            [post_status] => publish
            [comment_status] => closed
            [ping_status] => closed
            [post_password] => 
            [post_name] => tarif-2
            [to_ping] => 
            [pinged] => 
            [post_modified] => 2021-08-06 15:06:27
            [post_modified_gmt] => 2021-08-06 12:06:27
            [post_content_filtered] => 
            [post_parent] => 0
            [guid] => https://site.com/?post_type=dw_subscrip_tarif&p=439
            [menu_order] => 0
            [post_type] => dw_subscrip_tarif
            [post_mime_type] => 
            [comment_count] => 0
            [filter] => raw
            [price] => 1950
            [dw_type] => months
            [dw_count] => 12
        )
)

 

Пример $dwSubscription->is():

global $dwSubscription;
echo '<pre>' . print_r($dwSubscription->is(), true) . '<pre>';

Результат:

WP_Post Object
(
    [ID] => 489
    [post_author] => 6
    [post_date] => 2021-08-15 12:49:12
    [post_date_gmt] => 2021-08-15 09:49:12
    [post_content] => 
    [post_title] => Подписка на 1 месяц; Тариф: Тариф 1; Пользоваталь: user (6)
    [post_excerpt] => 
    [post_status] => publish
    [comment_status] => closed
    [ping_status] => closed
    [post_password] => 
    [post_name] => podpiska-454
    [to_ping] => 
    [pinged] => 
    [post_modified] => 2021-08-15 12:49:12
    [post_modified_gmt] => 2021-08-15 09:49:12
    [post_content_filtered] => 
    [post_parent] => 0
    [guid] => https://site.com/?post_type=dw_subscription&p=454
    [menu_order] => 0
    [post_type] => dw_subscription
    [post_mime_type] => 
    [comment_count] => 0
    [filter] => raw
    [active] => 1
    [tarif] => 396
    [date_start] => 2021-08-15
    [date_end] => 2021-09-15
    [is_pay] => 0
    [order] => 
    [type] => start
    [tarif_next] => 396
    [tarif_type] => month
    [tarif_count] => 9
    [price] => 205
)