fix: extract subscriber ID from nested data field in phpList response
phpList REST API v3 returns subscriber data wrapped in a "data" key:
{"status":"success","type":"Subscriber","data":{"id":"2400",...}}
Both subscriber_get_by_email and subscriber_add responses are now read as
response['data']['id'] with a fallback to response['id'] for compatibility.
Previously the code checked only response['id'] (top level), found nothing,
and reported failure even though the subscriber was created successfully.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -179,8 +179,10 @@ class WooList_API {
|
||||
$subscriber_id = null;
|
||||
$existing = $this->subscriber_get_by_email( $email );
|
||||
|
||||
if ( ! is_wp_error( $existing ) && ! empty( $existing['id'] ) ) {
|
||||
$subscriber_id = (int) $existing['id'];
|
||||
// phpList wraps subscriber data inside a "data" key: {"status":"success","data":{"id":…}}
|
||||
$existing_id = $existing['data']['id'] ?? $existing['id'] ?? null;
|
||||
if ( ! is_wp_error( $existing ) && ! empty( $existing_id ) ) {
|
||||
$subscriber_id = (int) $existing_id;
|
||||
WooList_Logger::debug( 'Found existing subscriber id=' . $subscriber_id . ' email=' . $email );
|
||||
} else {
|
||||
// Step 2: create a new subscriber.
|
||||
@@ -192,7 +194,9 @@ class WooList_API {
|
||||
return [ 'success' => false, 'subscriber_id' => null ];
|
||||
}
|
||||
|
||||
$subscriber_id = isset( $added['id'] ) ? (int) $added['id'] : null;
|
||||
// phpList wraps the new subscriber inside a "data" key.
|
||||
$subscriber_id = isset( $added['data']['id'] ) ? (int) $added['data']['id']
|
||||
: ( isset( $added['id'] ) ? (int) $added['id'] : null );
|
||||
|
||||
if ( $subscriber_id ) {
|
||||
WooList_Logger::info( 'Created new subscriber id=' . $subscriber_id . ' email=' . $email );
|
||||
|
||||
Reference in New Issue
Block a user