<?php
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly
}
// External id, amount, customer id, currency $providerQueryParameterMap = [
'paypal' => ["tx", "amt", null, "cc"], 'moonclerk' => ["payment_id", "customer_id", "amount", null], 'chargebee' => ["invoice_id", null, "sub_id", null],
];
/**
* Tapfiliate shortcode function * * @param array $atts The atts * * @return string returns tracking snippet */
function tapfiliate_shortcode($atts) {
// Amount and currency query params take precedence over explicitely passed values, // so that those can act as defaults. Manually set query params take precedence over // provider query params (i.e. they override them.) $attributes = shortcode_atts( [ 'amount' => null, 'amount_query_param' => null, 'commission_type' => "default", 'coupons' => null, 'currency' => null, 'currency_query_param' => null, 'customer_id' => null, 'customer_id_query_param' => null, 'customer_type' => null, 'external_id_query_param' => null, 'meta_data' => null, 'provider' => null, ], $atts );
$options = []; $is_customer_only = false;
// Get "provider" query params if ($attributes['provider'] && isset($providerQueryParameterMap[$attributes['provider']])) { list( $query_parameter_external_id, $query_parameter_conversion_amount, $query_parameter_customer_id, $query_parameter_currency ) = $providerQueryParameterMap[$attributes['provider']]; }
// Get manually defined query params $query_parameter_external_id = $attributes['external_id_query_param']; $query_parameter_conversion_amount = $attributes['amount_query_param']; $query_parameter_customer_id = $attributes['customer_id_query_param']; $query_parameter_currency = $attributes['currency_query_param'];
$external_id = isset($_GET[$query_parameter_external_id]) ? $_GET[$query_parameter_external_id] : null; $customer_id = isset($_GET[$query_parameter_customer_id]) ? $_GET[$query_parameter_customer_id] : null; $amount = isset($_GET[$query_parameter_conversion_amount]) ? $_GET[$query_parameter_conversion_amount] : $attributes['amount']; $currency = isset($_GET[$query_parameter_currency]) ? $_GET[$query_parameter_currency] : $attributes['currency'];
$external_id_arg = $external_id !== null ? "'$external_id'" : "null"; $amount_arg = $amount !== null ? $amount : "null";
if ($customer_id) { $options['customer_id'] = $customer_id; }
if ($coupons = $attributes['coupons']) { $options['coupons'] = $coupons; }
if ($currency) { $options['currency'] = $currency; }
if ($meta_data = $attributes['meta_data']) { // We allow multiple fields with meta_data="key1=value1&key2=value2" parse_str(str_replace("&", "&", $attributes['meta_data']), $meta_data); $options['meta_data'] = $meta_data; }
$customer_type = in_array($attributes['customer_type'], ['trial', 'lead', 'customer']) ? $attributes['customer_type'] : null; $is_customer_only = $customer_type !== null && $customer_id !== null;
return tapfiliate_generate_inline_code(true, $is_customer_only, $customer_type, $external_id_arg, $amount_arg, $options, $attributes['commission_type'], [], "wordpress", true);
}
add_shortcode('tapfiliate', 'tapfiliate_shortcode');
function tapfiliate_render_wordpress_code() {
$is_converting = false; $external_id_arg = null; $amount_arg = null; $options = [];
$script = tapfiliate_generate_inline_code($is_converting, null, null, $external_id_arg, $amount_arg, $options, null, [], "wordpress", false);
wp_add_inline_script("tapfiliate-js", $script);
}
This category currently contains no pages or media.