WP Manifestindependent plugin directory
manifest / integrations / uk-mp-email

UK MP Email Search

The UK MP Email Search plugin is a WordPress plugin that integrates with the UK Parliament Members API.

★ 0stars
v1.1.0latest · 10mo ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/torontopubliclibra/uk-mp-email/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

UK MP Email Search Plugin

Overview

The UK MP Email Search plugin is a WordPress plugin that integrates with the UK Parliament Members API. It allows users to find their MP by entering a postcode, and provides a templated email system for contacting their MP directly.

Installation

Standard WordPress Installation

  1. Download/Upload: Place the plugin files in /wp-content/plugins/uk-mp-email/
  2. Activate: Go to Plugins → Installed Plugins and activate "UK MP Email Search"
  3. Configure: Navigate to Settings → UK MP Email Settings
  4. Deploy: Add shortcodes to your pages

Requirements

  • WordPress: 5.0 or higher
  • PHP: 7.4 or higher
  • MySQL: 5.6 or higher
  • Internet Connection: Required for UK Parliament API access

Quick Start

1. Basic Implementation

Add these shortcodes to any page or post:

[ukmp_email_search]
[ukmp_email_results]

2. Test the Plugin

Use the test shortcode to verify installation:

[ukmp_email_test]

3. Try It Out

Visit your page and test with a UK postcode like "SW1A 1AA" (Houses of Parliament).

Configuration

Email Template Settings

Navigate to Settings → UK MP Email Settings to configure:

Email Template

Customize the message body using these placeholders:

  • {MP_NAME} - MP's full name and title (e.g., "Mr John Smith MP")
  • {POSTCODE} - User's postcode (formatted)
  • {MP_EMAIL} - MP's email address
  • {LOCATION} - MP's constituency
  • [Your name] - User's entered name
  • [Your email] - User's entered email address

Email Subject

Configure the subject line using the same placeholders.

Default Template

Dear {MP_NAME},

I am writing to you, my Member of Parliament, as a constituent of {LOCATION}.

[Your message here]

I would appreciate your response on this matter.

Sincerely,
[Your name]
[Your email]

Cache Settings

  • Enable Cache: Improves performance (recommended: enabled)
  • Cache Duration: How long to store API responses (default: 3600 seconds/1 hour)
  • Clear Cache: Admin tool for clearing cached data

Admin Tools

  • Test API Connection: Verify connectivity to UK Parliament API
  • Clear Cache: Remove all cached API responses

Shortcode Reference

Primary Shortcodes

[ukmp_email_search]

Creates the main search form where users enter their details.

Basic Usage:

[ukmp_email_search]

Advanced Usage:

[ukmp_email_search 
    button_text="Find My MP"
    name_placeholder="Enter your full name"
    email_placeholder="Your email address"
    postcode_placeholder="UK postcode (e.g. SW1A 1AA)"]

Parameters:

  • button_text - Text for the search button (default: "Find My MP")
  • name_placeholder - Placeholder for name input field
  • email_placeholder - Placeholder for email input field
  • postcode_placeholder - Placeholder for postcode input field

[ukmp_email_results]

Creates the container where MP information and email preview are displayed.

[ukmp_email_results]

[ukmp_email_test]

Simple status check to verify plugin is working.

[ukmp_email_test]

API Integration

UK Parliament Members API

The plugin integrates with the official UK Parliament Members API:

Endpoints Used:

  1. Search: https://members-api.parliament.uk/api/Members/Search

    • Purpose: Find MP by postcode location
    • Parameters: Location (postcode), skip, take
  2. Contact: https://members-api.parliament.uk/api/Members/{MP_ID}/Contact

    • Purpose: Retrieve MP contact information including email

No Authentication Required: The Parliament API is publicly accessible

Data Processing

Postcode Handling:

  • Accepts postcodes with or without spaces
  • Validates UK postcode format using regex
  • Removes spaces for API calls
  • Displays formatted version to users

Data Extraction:

  • MP Name: data.items[0].value.nameFullTitle
  • MP Email: data.value[0].email
  • Constituency: data.items[0].value.latestHouseMembership.membershipFromName
  • MP ID: data.items[0].value.id

Development

Hooks and Filters

Available Actions:

// Plugin initialization
do_action('ukmp_email_plugin_loaded');

// Before API request
do_action('ukmp_email_before_api_request', $endpoint, $params);

// After successful search
do_action('ukmp_email_search_success', $mp_data, $postcode);

Available Filters:

// Modify API request arguments
apply_filters('ukmp_email_api_request_args', $args, $endpoint);

// Customize email template processing
apply_filters('ukmp_email_template_content', $content, $mp_data);

// Modify search results
apply_filters('ukmp_email_search_results', $results, $postcode);

Customization

CSS Styling

Target these classes for custom styling:

/* Main containers */
.ukmp-email-search-form { /* Search form wrapper */ }
.ukmp-email-results { /* Results container */ }
.ukmp-email-mp-profile { /* MP profile display */ }

/* Form elements */
.ukmp-email-search-form input[type="text"],
.ukmp-email-search-form input[type="email"] { /* Input fields */ }
.ukmp-email-search-form button { /* Search button */ }

/* MP information */
.mp-name { /* MP name styling */ }
.mp-details { /* MP details container */ }
.detail-item { /* Individual detail items */ }

/* Email preview */
.ukmp-email-preview { /* Email preview container */ }
.ukmp-email-subject-preview { /* Subject line preview */ }
.ukmp-email-body-preview { /* Email body preview */ }

/* Action buttons */
.contact-mp-link { /* Send email button */ }

/* States */
.ukmp-email-loading { /* Loading indicator */ }
.ukmp-email-error { /* Error messages */ }

The plugin is also setup to integrate with the Not A Phase website's dark theme, using the parent class .body--dark.

JavaScript Customization

The plugin provides JavaScript events for custom functionality:

// Listen for successful MP search
document.addEventListener('ukmp_email_search_complete', function(event) {
    const mpData = event.detail;
    // Custom functionality
});

// Listen for email preview updates
document.addEventListener('ukmp_email_preview_updated', function(event) {
    const emailContent = event.detail;
    // Custom functionality
});

Troubleshooting

Potential Issues

1. Plugin Not Visible/Working

  • Verify plugin is activated in Plugins → Installed Plugins
  • Check for PHP errors in debug.log
  • Test with [ukmp_email_test] shortcode

2. Search Not Working

  • Verify internet connectivity
  • Test with known working postcodes
  • Check browser console for JavaScript errors
  • Verify UK Parliament API availability

3. No Results Found

  • Ensure postcode is valid UK format
  • Some postcodes may not have MPs (e.g., non-residential areas)
  • Check API response in browser developer tools

4. Email Preview Not Showing

  • Verify email template is configured in admin settings
  • Check that MP has email address in Parliament database
  • Clear plugin cache if enabled

Debug Mode

Enable WordPress debug mode for detailed error information:

// In wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Support

For technical support:

  1. Check this documentation
  2. Review debug logs
  3. Test with minimal plugins/default theme
  4. Contact plugin developer at dana.r.teagle@gmail.com

Security

Security Measures

Input Validation:

  • All user inputs sanitized using WordPress functions
  • UK postcode format validation
  • Email address validation

API Security:

  • No sensitive data stored or transmitted
  • Uses official UK Parliament public API
  • Rate limiting compliance

WordPress Security:

  • Nonce verification for all AJAX requests
  • Capability checks for admin functions
  • Output escaping for all displayed content
  • SQL injection prevention through WordPress APIs

Data Privacy

Data Collection:

  • Only collects data temporarily for API requests
  • No personal data stored in database
  • No tracking or analytics

Third-Party Data:

  • MP information sourced from UK Parliament API
  • Data accuracy depends on Parliament's database
  • No data shared with third parties

Licensing and Attribution

License

This plugin is licensed under the GNU General Public License v2 or later.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

Full license text: https://www.gnu.org/licenses/gpl-2.0.html

Authorship

This plugin was originally developed by Dana Rosamund Teagle for Not A Phase in November 2025.

Changelog

Version 1.0.0 (November 2025)

  • Initial release
  • Complete MP search and email functionality
  • Email template system with placeholders
  • Admin configuration interface
  • Caching system implementation
  • Responsive design
  • Security and accessibility features

Releases

2 releases.

Tag
Published
v1.1.0 latest
Dec 13, 2025 10mo ago
Nov 28, 2025 11mo ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.