get_charset_collate();
$prefix = $wpdb->prefix;

require_once( ABSPATH . ‘wp-admin/includes/upgrade.php’ );

$tables = [
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_user_profile (
user_id BIGINT UNSIGNED NOT NULL, nickname VARCHAR(100) DEFAULT », age INT DEFAULT NULL, engagement_level VARCHAR(50) DEFAULT », bio TEXT, platform_goal VARCHAR(100) DEFAULT », languages LONGTEXT, current_vibe_id INT DEFAULT NULL, vibe_updated_at DATETIME DEFAULT NULL, PRIMARY KEY (user_id), FOREIGN KEY (user_id) REFERENCES {$prefix}users(ID) ON DELETE CASCADE
) $charset_collate;»,
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_user_locations (
user_id BIGINT UNSIGNED NOT NULL, last_coordinates POINT DEFAULT NULL, habitat_zones LONGTEXT, saved_venues LONGTEXT, PRIMARY KEY (user_id), FOREIGN KEY (user_id) REFERENCES {$prefix}users(ID) ON DELETE CASCADE
) $charset_collate;»,
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_user_beverage_preferences (
user_id BIGINT UNSIGNED NOT NULL, spirits LONGTEXT, wine LONGTEXT, beer_cider LONGTEXT, fermented LONGTEXT, PRIMARY KEY (user_id), FOREIGN KEY (user_id) REFERENCES {$prefix}users(ID) ON DELETE CASCADE
) $charset_collate;»,
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_user_lifestyle (
user_id BIGINT UNSIGNED NOT NULL, favorite_time VARCHAR(50) DEFAULT », occupation VARCHAR(100) DEFAULT », event_format VARCHAR(50) DEFAULT », outing_frequency VARCHAR(50) DEFAULT », venue_choice VARCHAR(50) DEFAULT », company_pref VARCHAR(50) DEFAULT », venue_atmosphere VARCHAR(50) DEFAULT », comm_style VARCHAR(50) DEFAULT », rating_style VARCHAR(50) DEFAULT », explorer_type VARCHAR(50) DEFAULT », PRIMARY KEY (user_id), FOREIGN KEY (user_id) REFERENCES {$prefix}users(ID) ON DELETE CASCADE
) $charset_collate;»,
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_user_media_prompts (
user_id BIGINT UNSIGNED NOT NULL, photos LONGTEXT, interest_tags LONGTEXT, text_prompts LONGTEXT, spotify_anthem VARCHAR(255) DEFAULT », social_links LONGTEXT, PRIMARY KEY (user_id), FOREIGN KEY (user_id) REFERENCES {$prefix}users(ID) ON DELETE CASCADE
) $charset_collate;»,
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_vibes_dictionary (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, category VARCHAR(50) NOT NULL, code VARCHAR(10) NOT NULL, name VARCHAR(100) NOT NULL, emoji VARCHAR(10) NOT NULL, description TEXT, PRIMARY KEY (id), UNIQUE KEY code (code)
) $charset_collate;»,
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_user_vibe_history (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT UNSIGNED NOT NULL, vibe_id INT UNSIGNED NOT NULL, set_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY user_id (user_id), FOREIGN KEY (user_id) REFERENCES {$prefix}users(ID) ON DELETE CASCADE, FOREIGN KEY (vibe_id) REFERENCES {$prefix}st_al_vibes_dictionary(id) ON DELETE RESTRICT
) $charset_collate;»,
«CREATE TABLE IF NOT EXISTS {$prefix}st_al_vibe_recommendation_rules (
vibe_id INT UNSIGNED NOT NULL, target_beverage_category LONGTEXT, target_venue_atmosphere LONGTEXT, alternative_options LONGTEXT, PRIMARY KEY (vibe_id), FOREIGN KEY (vibe_id) REFERENCES {$prefix}st_al_vibes_dictionary(id) ON DELETE CASCADE
) $charset_collate;»,
// Кастомная таблица для данных Summer Menu (изолирует wp_options)
«CREATE TABLE IF NOT EXISTS {$prefix}st_sm_user_data (
phone VARCHAR(50) NOT NULL, checks LONGTEXT, completed LONGTEXT, notes LONGTEXT, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (phone)
) $charset_collate;»
];

foreach ($tables as $sql) {
dbDelta( $sql );
}

if ( ! $wpdb->get_var( «SELECT COUNT(*) FROM {$prefix}st_al_vibes_dictionary» ) ) {
st_al_seed_vibes( «{$prefix}st_al_vibes_dictionary» );
}

update_option( ‘st_global_tables_installed_v3’, 1 );
}

// ==============================================================================
// 2. ФОРМА ПУБЛИКАЦИИ:

Доступ закрыт

Для публикации новых заметок в базу знаний платформы необходимо авторизоваться.

Войти Регистрация

// ==============================================================================
add_shortcode(‘frontend_post_form’, ‘render_comic_frontend_form’);

function render_comic_frontend_form() {
ob_start();
if ( ! is_user_logged_in() ) {
return st_get_auth_prompt_html(‘Для публикации новых заметок в базу знаний платформы необходимо авторизоваться.’);
}
?>

+ запись


0));
foreach($categories as $category) {
echo ‘
‘st_description’,
‘textarea_rows’ => 8,
‘media_buttons’ => true,
‘quicktags’ => true,
‘dfw’ => true,
‘tinymce’ => array(
‘toolbar1’ => ‘bold,italic,link,wp_adv’,
‘toolbar2’ => ‘formatselect,strikethrough,forecolor,bullist,numlist,blockquote,alignleft,aligncenter,alignright,unlink,removeformat,fullscreen’,
‘toolbar3’ => »,
‘toolbar4’ => »,
‘fontsize_formats’ => ’10px,12px,14px,16px,18px,20px,24px’,
‘content_css’ => false,
‘content_style’ => ‘body { font-family: Georgia, «Times New Roman», Times, serif; font-size: 16px; line-height: 1.5; color: #1a1a1a; }’,
),
‘editor_height’ => 150,
‘editor_class’ => ‘st-editor-content’,
‘drag_drop_upload’ => true,
);
wp_editor(», ‘st_description’, $editor_settings);
?>

ПИН-КОД

— —









‘Ошибка безопасности. Обновите страницу.’ ) );
}

$pin = isset( $_POST[‘st_admin_pass’] ) ? sanitize_text_field( $_POST[‘st_admin_pass’] ) : »;
if ( $pin !== ST_ADMIN_PIN ) {
wp_send_json_error( array( ‘message’ => ‘Неверный ПИН-код.’ ) );
}

$title = sanitize_text_field( $_POST[‘st_title’] );
$content = wp_kses_post( $_POST[‘st_description’] );
$category_id = intval( $_POST[‘st_category’] );

if ( empty( $title ) ) {
wp_send_json_error( array( ‘message’ => ‘Заполните заголовок.’ ) );
}
if ( $category_id === 0 ) {
wp_send_json_error( array( ‘message’ => ‘Выберите категорию.’ ) );
}

$post_data = array(
‘post_title’ => $title,
‘post_content’ => $content,
‘post_status’ => ‘publish’,
‘post_type’ => ‘post’,
‘post_category’ => array( $category_id ),
);

$post_id = wp_insert_post( $post_data, true );

if ( is_wp_error( $post_id ) ) {
wp_send_json_error( array( ‘message’ => ‘Ошибка создания записи: ‘ . $post_id->get_error_message() ) );
} else {
st_send_telegram_notification( $post_id, $title, $category_id );
wp_send_json_success( array( ‘message’ => ‘ Запись опубликована! ID: ‘ . $post_id ) );
}
}

function st_send_telegram_notification( $post_id, $title, $category_id ) {
$category_name = ‘Без категории’;
$cat = get_term( $category_id, ‘category’ );
if ( $cat && ! is_wp_error( $cat ) ) {
$category_name = $cat->name;
}

$post_url = get_permalink( $post_id );

$message = » *Spirit Trade Distribution | Новая запись*\n\n»;
$message .= » *{$title}*\n»;
$message .= » Категория: {$category_name}\n»;
$message .= » [Читать запись]({$post_url})\n»;
$message .= » » . current_time( ‘d.m.Y H:i’ );

$url = «https://api.telegram.org/bot» . ST_TG_BOT_TOKEN . «/sendMessage»;
$args = array(
‘body’ => array(
‘chat_id’ => ST_TG_CHAT_ID,
‘text’ => $message,
‘parse_mode’ => ‘Markdown’,
‘disable_web_page_preview’ => false,
),
‘timeout’ => 5,
);

$response = wp_remote_post( $url, $args );
if ( is_wp_error( $response ) ) {
error_log( ‘Telegram notification error: ‘ . $response->get_error_message() );
}
}

// ==============================================================================
// 3. БАЗА ЗНАНИЙ:

Описание

Загрузка…

0 записей по теме
Синхронизация данных…

// ==============================================================================

add_shortcode(‘knowledge_base_map’, ‘st_render_knowledge_base_map’);
function st_render_knowledge_base_map() {

ob_start();

$categories = get_categories(array(‘hide_empty’ => 0));
$sidebar_html = »;
$colors = [‘#ffde59’, ‘#c1ff00’, ‘#38b6ff’, ‘#ff914d’, ‘#cb6ce6’, ‘#ff6b6b’, ‘#48dbfb’];

foreach ($categories as $cat) {
$raw_name = esc_html($cat->name);
$number = »;
$rest_of_name = $raw_name;

if (preg_match(‘/^\[(\d+)\]\s*(.*)$/u’, $raw_name, $matches)) {
$number = $matches[1];
$rest_of_name = $matches[2];
}

$parts = explode(‘|’, $rest_of_name);
$main_title = trim($parts[0]);
$sub_title = isset($parts[1]) ? trim($parts[1]) : »;

$hash = abs(crc32($main_title));
$bg_color = $colors[$hash % count($colors)];

$icon = !empty($number) ? $number : mb_substr($main_title, 0, 1, ‘UTF-8’);
$desc = trim($cat->description);

$btn_inner = ‘

‘ . $icon . ‘

‘;
$btn_inner .= ‘

‘;
$btn_inner .= ‘‘ . $main_title . ‘‘;

if ($sub_title) {
$btn_inner .= ‘для: ‘ . $sub_title . ‘‘;
}
$btn_inner .= ‘

‘;

$sidebar_html .= sprintf(
‘‘,
esc_attr($cat->term_id),
esc_attr($cat->count),
esc_attr($number),
esc_attr($main_title),
esc_attr($sub_title),
esc_attr($desc),
esc_attr($raw_name),
$btn_inner
);
}
?>

Описание

Загрузка…

0
записей по теме

Синхронизация данных…

‘;
$html .= ‘

‘;
$html .= ‘

‘;

$categories = get_categories(array(‘hide_empty’ => true));
$branch_side = ‘left’;

foreach ($categories as $index => $cat) {
$posts = get_posts(array(
‘category’ => $cat->term_id,
‘numberposts’ => 20,
‘post_status’ => ‘publish’
));

if ($posts) {
$branch_side = ($index % 2 === 0) ? ‘left’ : ‘right’;

$html .= ‘

‘;
$html .= ‘

‘;
$html .= ‘

‘;
$html .= ‘

‘ . esc_html($cat->name) . ‘

‘;
$html .= ‘

‘;

$hidden_list = ‘

    ‘;

    foreach ($posts as $post_index => $p) {
    $post_url = esc_url(get_permalink($p->ID));
    $post_title = esc_html($p->post_title);
    $post_date = get_the_date(‘d.m.Y’, $p->ID);

    $is_top = ($post_index % 2 === 0);
    $position_class = $is_top ? ‘st-bud-top’ : ‘st-bud-bottom’;

    $html .= ‘‘;
    $html .= ‘ ‘;
    $html .= ‘
    ‘;

    $hidden_list .= ‘

  • ‘ . $post_title . ‘
  • ‘;
    }

    $hidden_list .= ‘

‘;

$html .= ‘

‘;
$html .= ‘

‘;
$html .= ‘

‘;
$html .= ‘

‘;
$html .= ‘

‘;
$html .= ‘

‘;
}
}

$html .= ‘

‘;
$html .= ‘

Рубрика

‘;
$html .= ‘

‘; // Конец st-vine-container

return $html;
}

function st_get_vine_buds_assets() {
return ‘

‘;
}

// ==============================================================================
// 5. SUMMER MENU REST API (БЕЗОПАСНОСТЬ)
// ==============================================================================
add_action( ‘rest_api_init’, function () {
register_rest_route( ‘summer-menu/v1’, ‘/get-user-data’, array(
‘methods’ => ‘POST’,
‘callback’ => ‘summer_menu_api_get_data’,
‘permission_callback’ => ‘__return_true’
));

register_rest_route( ‘summer-menu/v1’, ‘/save-user-data’, array(
‘methods’ => ‘POST’,
‘callback’ => ‘summer_menu_api_save_data’,
‘permission_callback’ => ‘__return_true’
));
});

function summer_menu_api_save_data( $request ) {
global $wpdb;
$params = $request->get_json_params();

$user_phone = isset($params[‘user_phone’]) ? sanitize_text_field($params[‘user_phone’]) : »;
if (empty($user_phone)) {
return rest_ensure_response( array( ‘success’ => false, ‘message’ => ‘Телефон не указан’ ) );
}

// Сохранение индивидуальных данных через REPLACE INTO в кастомную таблицу (исключает переполнение wp_options)
$table = $wpdb->prefix . ‘st_sm_user_data’;
$wpdb->replace( $table, [
‘phone’ => $user_phone,
‘checks’ => wp_json_encode($params[‘checks’] ?? []),
‘completed’ => wp_json_encode($params[‘completed’] ?? []),
‘notes’ => wp_json_encode($params[‘notes’] ?? []),
]);

// Глобальные настройки (можно хранить в wp_options, так как это общие данные)
if ( isset($params[‘basketsData’]) ) update_option( ‘sm_global_baskets’, wp_json_encode($params[‘basketsData’]) );
if ( isset($params[‘weeksCalendar’]) ) update_option( ‘sm_global_calendar’, wp_json_encode($params[‘weeksCalendar’]) );
if ( isset($params[‘fullRecipes’]) ) update_option( ‘sm_global_recipes’, wp_json_encode($params[‘fullRecipes’]) );
if ( isset($params[‘dessertsList’]) ) update_option( ‘sm_global_desserts’, wp_json_encode($params[‘dessertsList’]) );
if ( isset($params[‘globalInfo’]) ) update_option( ‘sm_global_info’, wp_json_encode($params[‘globalInfo’]) );

return rest_ensure_response( array( ‘success’ => true, ‘message’ => ‘Дані успішно збережено в базі’ ) );
}

function summer_menu_api_get_data( $request ) {
global $wpdb;
$params = $request->get_json_params();
$user_phone = isset($params[‘user_phone’]) ? sanitize_text_field($params[‘user_phone’]) : »;

$table = $wpdb->prefix . ‘st_sm_user_data’;
$user_data = $wpdb->get_row($wpdb->prepare(«SELECT checks, completed, notes FROM $table WHERE phone = %s», $user_phone), ARRAY_A);

$response_data = array(
‘checks’ => $user_data && !empty($user_data[‘checks’]) ? $user_data[‘checks’] : ‘{}’,
‘completed’ => $user_data && !empty($user_data[‘completed’]) ? $user_data[‘completed’] : ‘{}’,
‘notes’ => $user_data && !empty($user_data[‘notes’]) ? $user_data[‘notes’] : ‘{}’,

‘basketsData’ => get_option( ‘sm_global_baskets’, null ),
‘weeksCalendar’ => get_option( ‘sm_global_calendar’, null ),
‘fullRecipes’ => get_option( ‘sm_global_recipes’, null ),
‘dessertsList’ => get_option( ‘sm_global_desserts’, null ),
‘globalInfo’ => get_option( ‘sm_global_info’, null ),
);

return rest_ensure_response( $response_data );
}

// ==============================================================================
// 6. МОДУЛЬ AL-ТИНДЕР: АНКЕТА ПОКУПАТЕЛЯ, ВАЙБЫ, РЕКОМЕНДАЦИИ (ОБНОВЛЕНО)
// ==============================================================================

function st_al_seed_vibes( $table ) {
global $wpdb;
$vibes = [
// Положительные (20)
[‘category’ => ‘Положительные’, ‘code’ => ‘П1’, ‘name’ => ‘Радость’, ’emoji’ => », ‘description’ => ‘Чувство удовольствия, веселья и наслаждения позитивными моментами.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П2’, ‘name’ => ‘Любовь’, ’emoji’ => », ‘description’ => ‘Глубокая привязанность, нежность и забота о другом человеке.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П3’, ‘name’ => ‘Удовлетворение’, ’emoji’ => », ‘description’ => ‘Ощущение успеха, гармонии и довольства достигнутыми результатами.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П4’, ‘name’ => ‘Восхищение’, ’emoji’ => », ‘description’ => ‘Сильное удивление, восторг и вдохновение чем‑то или кем‑то.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П5’, ‘name’ => ‘Благодарность’, ’emoji’ => », ‘description’ => ‘Чувство признательности за полученное, уважение и осознание ценности.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П6’, ‘name’ => ‘Умиротворение’, ’emoji’ => », ‘description’ => ‘Внутреннее спокойствие, доверие к миру и ощущение стабильности.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П7’, ‘name’ => ‘Спокойствие’, ’emoji’ => », ‘description’ => ‘Отсутствие тревог, расслабленность и ощущение контроля над ситуацией.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П8’, ‘name’ => ‘Довольство’, ’emoji’ => », ‘description’ => ‘Приятные ощущения, наслаждение и блаженство от текущего момента.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П9’, ‘name’ => ‘Воодушевление’, ’emoji’ => », ‘description’ => ‘Прилив энергии, желание действовать и мотивация к свершениям.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П10’, ‘name’ => ‘Вдохновение’, ’emoji’ => », ‘description’ => ‘Озарение, творческий подъём и стремление создавать новое.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П11’, ‘name’ => ‘Уверенность’, ’emoji’ => », ‘description’ => ‘Ощущение собственной силы, смелость и решительность.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П12’, ‘name’ => ‘Надежда’, ’emoji’ => », ‘description’ => ‘Вера в лучшее будущее, позитивные ожидания и оптимистичный настрой.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П13’, ‘name’ => ‘Лёгкость’, ’emoji’ => », ‘description’ => ‘Чувство свободы от напряжения, беззаботность и непринуждённость.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П14’, ‘name’ => ‘Свобода’, ’emoji’ => », ‘description’ => ‘Ощущение независимости, отсутствия ограничений и возможности выбора.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П15’, ‘name’ => ‘Азарт’, ’emoji’ => », ‘description’ => ‘Стремление испытать свои силы, вызов и жажда победы.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П16’, ‘name’ => ‘Интерес’, ’emoji’ => », ‘description’ => ‘Любопытство, желание исследовать и узнавать новое.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П17’, ‘name’ => ‘Преданность’, ’emoji’ => », ‘description’ => ‘Верность, готовность поддерживать и неразрывная связь с близкими.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П18’, ‘name’ => ‘Дружелюбие’, ’emoji’ => », ‘description’ => ‘Доброжелательность, открытость и желание делиться радостью.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П19’, ‘name’ => ‘Принятие’, ’emoji’ => », ‘description’ => ‘Смирение перед реальностью, согласие с собой и готовность отпускать.’],
[‘category’ => ‘Положительные’, ‘code’ => ‘П20’, ‘name’ => ‘Оптимизм’, ’emoji’ => », ‘description’ => ‘Уверенность в хорошем исходе, вера в себя и светлый взгляд в будущее.’],

// Отрицательные (11)
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О1’, ‘name’ => ‘Страх’, ’emoji’ => », ‘description’ => ‘Опасение перед угрозой или неизвестностью, боязнь потерять контроль.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О2’, ‘name’ => ‘Тревога’, ’emoji’ => », ‘description’ => ‘Напряжённое ожидание неприятностей, беспокойство о будущем.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О3’, ‘name’ => ‘Паника’, ’emoji’ => », ‘description’ => ‘Крайняя тревога, хаос в мыслях и чувство полной беспомощности.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О4’, ‘name’ => ‘Гнев’, ’emoji’ => », ‘description’ => ‘Сильное раздражение, возмущение несправедливостью и готовность к активному противостоянию.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О5’, ‘name’ => ‘Обида’, ’emoji’ => », ‘description’ => ‘Чувство несправедливости, разочарование и душевная боль от действий других.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О6’, ‘name’ => ‘Зависть’, ’emoji’ => », ‘description’ => ‘Недовольство чужим успехом, желание обладать тем, что есть у другого.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О7’, ‘name’ => ‘Ревность’, ’emoji’ => », ‘description’ => ‘Страх потерять внимание или любовь, подозрительность и собственнические чувства.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О8’, ‘name’ => ‘Стыд’, ’emoji’ => », ‘description’ => ‘Ощущение унижения, неловкости и опасение осуждения окружающими.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О9’, ‘name’ => ‘Вина’, ’emoji’ => », ‘description’ => ‘Сожаление о совершённой ошибке, раскаяние и желание всё исправить.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О10’, ‘name’ => ‘Презрение’, ’emoji’ => », ‘description’ => ‘Чувство превосходства, высокомерие и отстранённость от тех, кого считают ниже.’],
[‘category’ => ‘Отрицательные’, ‘code’ => ‘О11’, ‘name’ => ‘Ненависть’, ’emoji’ => », ‘description’ => ‘Крайнее отторжение, враждебность и отвращение к кому‑либо.’],

// Смешанные (7)
[‘category’ => ‘Смешанные’, ‘code’ => ‘С1’, ‘name’ => ‘Смущение’, ’emoji’ => », ‘description’ => ‘Растерянность, неуверенность из‑за неожиданной или неловкой ситуации.’],
[‘category’ => ‘Смешанные’, ‘code’ => ‘С2’, ‘name’ => ‘Неловкость’, ’emoji’ => », ‘description’ => ‘Дискомфорт в общении, стеснение и ощущение «не на своём месте».’],
[‘category’ => ‘Смешанные’, ‘code’ => ‘С3’, ‘name’ => ‘Амбивалентность’, ’emoji’ => », ‘description’ => ‘Одновременное существование противоположных чувств или желаний.’],
[‘category’ => ‘Смешанные’, ‘code’ => ‘С4’, ‘name’ => ‘Шок’, ’emoji’ => », ‘description’ => ‘Оцепенение, внезапное потрясение и неспособность сразу осознать произошедшее.’],
[‘category’ => ‘Смешанные’, ‘code’ => ‘С5’, ‘name’ => ‘Изумление’, ’emoji’ => », ‘description’ => ‘Крайняя степень удивления, восхищённое потрясение от невероятного.’],
[‘category’ => ‘Смешанные’, ‘code’ => ‘С6’, ‘name’ => ‘Противоречивость’, ’emoji’ => », ‘description’ => ‘Внутренний конфликт между разными оценками или решениями.’],
[‘category’ => ‘Смешанные’, ‘code’ => ‘С7’, ‘name’ => ‘Колебание’, ’emoji’ => », ‘description’ => ‘Неуверенность, сомнения и трудность сделать окончательный выбор.’],
];

foreach ( $vibes as $v ) {
$wpdb->insert( $table, $v );
}
}

add_shortcode( ‘al_profile_setup’, ‘st_al_render_profile_form’ );
function st_al_render_profile_form() {
if ( ! is_user_logged_in() ) {
return st_get_auth_prompt_html(‘Чтобы заполнить анкету гурмана, находить идеальные заведения и свою компанию, вам необходимо войти в систему.’);
}

$current_user = wp_get_current_user();
$user_email = $current_user->user_email;
$user_nickname = $current_user->display_name ?: $current_user->user_login;

ob_start();
?>

‘;
}
ob_start();
?>


Сборка коллекции...

Фильтры

Виски
Водка
Джин
Ром
Текила
Мескаль
Коньяк
Арманьяк
Бренди
Ликеры
Настойки
Тихие вина
Игристые вина
Крепленые вина
Вермуты
Пиво
Сидр

История свайпов

Мои заметки

Заметка к товару

— ГИБКАЯ ВЕРСТКА И ИДЕАЛЬНЫЙ СВАЙП (v6.2)
// ==============================================================================
add_shortcode( ‘st_service_tinder’, ‘st_srv_render_tinder’ );
function st_srv_render_tinder() {
$current_user_id = get_current_user_id();
$cats = st_srv_get_alcohol_categories();
ob_start();
?>


Сборка коллекции…


Фильтры

$emoji): ?>


История свайпов

Мои заметки

Заметка к товару



Управление каталогом



Категории


Фото Позиция ↕ Категория ↕ Цена ↕ Действия
Загрузка данных…

Редактирование




Характеристики

Массовая правка характеристик

Выбрано позиций: 0.
Укажите название характеристики (например, «Объем» или «Страна») и новое значение. Если характеристики нет, она будет добавлена.




Добавление позиции



$emoji) echo ««; ?>

Пакетный импорт (JSON)





‘;
}
}
?>
Найти в каталоге