- New WooList_Logger class writes to wp-content/uploads/woolist-logs/woolist.log
- INFO level: subscription events, test connection results (always recorded)
- ERROR level: API failures, config problems (always recorded + php error_log fallback)
- DEBUG level: full request URLs (password redacted), raw responses, step-by-step
flow (only when "Enable debug logging" is checked in settings)
- Auto-rotates at 1 MB; log directory protected by .htaccess
- API class: logs every request URL (redacted) and raw response body at DEBUG,
errors at ERROR; subscribe_email_to_list logs each step (lookup/create/add)
- Hooks class: logs hook fire, skip reasons, and sync intent at DEBUG/INFO/ERROR
- Shortcode class: logs AJAX submissions, coupon generation, and failures
- Admin: new Logging section with "Enable debug logging" checkbox;
log viewer textarea (last 300 lines, dark theme) + Clear Log button
both visible at bottom of WooCommerce → Settings → phpList tab
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
63 lines
1.8 KiB
PHP
63 lines
1.8 KiB
PHP
<?php
|
|
/**
|
|
* Plugin Name: WooList — phpList Integration
|
|
* Plugin URI: https://github.com/woolist/woolist-phplist
|
|
* Description: Sync WooCommerce customers and newsletter signups to phpList.
|
|
* Version: 1.0.0
|
|
* Author: WooList
|
|
* Text Domain: woolist-phplist
|
|
* Domain Path: /languages
|
|
* Requires at least: 6.0
|
|
* Requires PHP: 7.4
|
|
* Requires Plugins: woocommerce
|
|
*
|
|
* @package WooList
|
|
*/
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
// Plugin constants.
|
|
define( 'WOOLIST_VERSION', '1.0.0' );
|
|
define( 'WOOLIST_PATH', plugin_dir_path( __FILE__ ) );
|
|
define( 'WOOLIST_URL', plugin_dir_url( __FILE__ ) );
|
|
|
|
/**
|
|
* Check that WooCommerce is active; show admin notice if not.
|
|
*/
|
|
function woolist_check_woocommerce() {
|
|
if ( ! class_exists( 'WooCommerce' ) ) {
|
|
add_action( 'admin_notices', function () {
|
|
echo '<div class="notice notice-error"><p>'
|
|
. esc_html__( 'WooList — phpList Integration requires WooCommerce to be installed and active.', 'woolist-phplist' )
|
|
. '</p></div>';
|
|
} );
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Bootstrap the plugin after all plugins are loaded.
|
|
*/
|
|
function woolist_init() {
|
|
load_plugin_textdomain( 'woolist-phplist', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
|
|
|
require_once WOOLIST_PATH . 'includes/class-woolist-logger.php';
|
|
WooList_Logger::init();
|
|
|
|
if ( ! woolist_check_woocommerce() ) {
|
|
return;
|
|
}
|
|
|
|
require_once WOOLIST_PATH . 'includes/class-woolist-api.php';
|
|
require_once WOOLIST_PATH . 'includes/class-woolist-admin.php';
|
|
require_once WOOLIST_PATH . 'includes/class-woolist-hooks.php';
|
|
require_once WOOLIST_PATH . 'includes/class-woolist-shortcode.php';
|
|
|
|
$api = new WooList_API();
|
|
new WooList_Admin( $api );
|
|
new WooList_Hooks( $api );
|
|
new WooList_Shortcode( $api );
|
|
}
|
|
add_action( 'plugins_loaded', 'woolist_init' );
|