WordPress/WooCommerce integration
WordPress Integration
Add the following code to your theme's functions.php
file or use a code snippets plugin:
<?php
add_action('wp_footer', 'add_staysignal_widget_script');
function add_staysignal_widget_script() {
$site_id = 'YOUR_SITE_ID_HERE'; // Your Site ID will appear here once subscribed
// Use site_url() for potentially better results than relying on widgetUrl prop
// $widget_base_url = site_url();
$script_src = 'https://app.staysignal.com/api/widget/script/YOUR_SITE_ID_HERE'; // Escape URL just in case
// Only output script tag if site_id is valid
if (!empty($site_id) && $site_id !== 'YOUR_SITE_ID_HERE') {
?>
<script src="<?php echo esc_url('https://app.staysignal.com/api/widget/script/YOUR_SITE_ID_HERE'); ?>" async></script>
<?php
} else {
// Maybe log an error server-side if ID is missing
error_log("StaySignal Error: Site ID not configured for script loading.");
return; // Don't output init script if main script won't load
}
?>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var checkStaySignal = setInterval(function() {
if (typeof StaySignal !== 'undefined' && StaySignal.init) {
clearInterval(checkStaySignal);
StaySignal.init({
onComplete: function(payload) { /* Handle completion */ },
onError: function(error) { console.error('StaySignal Error:', error); }
}); // Escape backticks just in case
}
}, 100);
});
</script>
<?php
}
add_shortcode('staysignal_cancel_button', 'staysignal_cancel_button_shortcode');
function staysignal_cancel_button_shortcode($atts) {
$atts = shortcode_atts(array('sub_id' => '', 'text' => 'Cancel Subscription', 'class' => 'staysignal-cancel-button'), $atts, 'staysignal_cancel_button');
if (empty($atts['sub_id'])) { return '<!-- StaySignal Button: Missing subscription ID -->'; }
return '<button class="staysignal-cancel ' . esc_attr($atts['class']) . '" data-subscription_id="' . esc_attr($atts['sub_id']) . '">' . esc_html($atts['text']) . '</button>';
}
?>
Add Cancel Buttons
You can add cancel buttons to your WordPress templates or use shortcodes:
Option 1: Direct HTML in Templates
<!-- In your template file -->
<button class="staysignal-cancel" data-subscription_id="<?php echo esc_attr($subscription_id); ?>">
Cancel Subscription
</button>
Option 2: Create a Shortcode
<?php
// Add this to your functions.php
function staysignal_cancel_button_shortcode($atts) {
$atts = shortcode_atts(array(
'subscription_id' => '',
'text' => 'Cancel Subscription'
), $atts);
return sprintf(
'<button class="staysignal-cancel" data-subscription_id="%s">%s</button>',
esc_attr($atts['subscription_id']),
esc_html($atts['text'])
);
}
add_shortcode('staysignal_cancel', 'staysignal_cancel_button_shortcode');
// Usage in posts/pages:
// [staysignal_cancel subscription_id="sub_123456" text="Cancel Your Subscription"]
See more examples for finding Stripe subscription IDs
Integration with Popular Platforms
WooCommerce
<?php
// Getting subscription ID from WooCommerce Subscriptions plugin
function get_subscription_id_for_staysignal($subscription) {
$stripe_sub_id = get_post_meta($subscription->get_id(), '_stripe_subscription_id', true);
return $stripe_sub_id;
}
// Usage in template
$subscription_id = get_subscription_id_for_staysignal($subscription);
?>
WordPress - Paid Memberships Pro
<?php
// For Paid Memberships Pro
function get_pmpro_stripe_subscription_id($user_id = null) {
if (empty($user_id)) {
$user_id = get_current_user_id();
}
global $wpdb;
$subscription_id = $wpdb->get_var(
$wpdb->prepare(
"SELECT subscr_id FROM {$wpdb->pmpro_membership_orders}
WHERE user_id = %d AND gateway = 'stripe'
ORDER BY id DESC LIMIT 1",
$user_id
)
);
return $subscription_id;
}
?>
Need Help?
If you encounter any issues with the integration, please contact our support team.
Last updated