Title: ConferenceManager
Author: creativestrategy24
Published: <strong>جُون 7, 2026</strong>
Last modified: اگست 28, 2026

---

Search plugins

![](https://ps.w.org/conferencemanager/assets/banner-772x250.png?rev=3563718)

![](https://ps.w.org/conferencemanager/assets/icon-256x256.png?rev=3563718)

# ConferenceManager

 By [creativestrategy24](https://profiles.wordpress.org/creativestrategy24/)

[Download](https://downloads.wordpress.org/plugin/conferencemanager.1.6.6.zip)

 * [Details](https://bcc.wordpress.org/plugins/conferencemanager/#description)
 * [Reviews](https://bcc.wordpress.org/plugins/conferencemanager/#reviews)
 *  [Installation](https://bcc.wordpress.org/plugins/conferencemanager/#installation)
 * [Development](https://bcc.wordpress.org/plugins/conferencemanager/#developers)

 [Support](https://wordpress.org/support/plugin/conferencemanager/)

## Description

Conference Manager is a WordPress plugin designed for academic societies and conference
organizers. It provides end-to-end management of event registration, payments, and
document generation.

**Features:**

 * Member management (import/export via CSV/Excel)
 * Event and session management
 * Registration forms with group (team) registration support
 * Bank transfer payment tracking with reconciliation
 * Automatic invoice and receipt PDF generation
 * Participant list and My Page (participants sign in with a one-time code sent 
   by email)
 * AES-256-GCM encryption for personal data
 * Audit logging, rate limiting, and bot protection
 * Transactional email notifications (OTP, confirmations)
 * SNS share buttons (Twitter/X, Facebook, LINE)
 * Full Japanese / English localization

A separately distributed Pro edition (Conference Manager Pro) adds abstract submission
and peer review, sponsor management, bulk email and other features for larger conferences.
It is a different plugin and is not required: everything listed above works in full
here, with nothing locked or time-limited. See Conference > What’s New in the admin
menu for the full list.

### External Services

This plugin connects to the following external services.

#### IPAex Font Download (PDF generation)

To render Japanese text in PDF documents (invoice, receipt), the plugin needs the
open-source IPAex Gothic and IPAex Mincho fonts. From the admin Dashboard you can
install them with one click; the plugin then downloads the font files (one-time,
per font). No user data is transmitted — it is a file download only. If the server
cannot reach the download host, you can instead upload the `.ttf` files directly
from the Dashboard (no external connection required).

 * Download host (mirror maintained by the plugin author): [https://cs24.biz/conference/fonts/](https://cs24.biz/conference/fonts/)
 * Data sent: none (file download only)
 * The download URL can be overridden via the `conf_manager_font_source_url` filter.
 * Original font source / IPAex Font License (IPA, Information-technology Promotion
   Agency): [https://moji.or.jp/ipafont/license/](https://moji.or.jp/ipafont/license/)

### Development / Building from source

The admin and public interfaces are built with React (JSX). The human-readable
 
source for the compiled, minified bundles `build/admin-app.js` and build/public-
app.js is shipped inside this plugin under the `src/` directory:

 * `src/admin/` — source for `build/admin-app.js` (admin dashboard app)
 * `src/public/` — source for `build/public-app.js` (public registration / MyPage
   app)

Build toolchain: the project uses [@wordpress/scripts](https://www.npmjs.com/package/@wordpress/scripts)
(
a wrapper around webpack and Babel). The webpack configuration is included as webpack.
config.js, and all dependencies and build scripts are declared in package.json (
with `package-lock.json` for reproducible installs).

To rebuild the compiled assets from source:

 1. Install Node.js 18+ and npm.
 2. From the plugin directory, run `npm install`.
 3. Run `npm run build`. This regenerates `build/admin-app.js` and
     build/public-app.
    js (and their `*.asset.php` dependency manifests). Use `npm start` for an unminified
    development watch build.

Third-party libraries bundled into the compiled JavaScript (all open source,
 installed
from the public npm registry and declared in `package.json`):

 * `html5-qrcode` — QR code scanner used for participant check-in (Apache-2.0)

WordPress-provided packages (`wp-element`, `wp-components`, `wp-api-fetch`,
 wp-
i18n, `react`, `react-jsx-runtime`) are declared as externals and are NOT bundled—
they are loaded from WordPress core at runtime.

## Screenshots

[⌊Dashboard — event overview and quick actions⌉⌊Dashboard — event overview and quick
actions⌉[

Dashboard — event overview and quick actions

[⌊Registration form — participant registration with group support⌉⌊Registration 
form — participant registration with group support⌉[

Registration form — participant registration with group support

[⌊Payment management — bank transfer reconciliation with invoice generation⌉⌊Payment
management — bank transfer reconciliation with invoice generation⌉[

Payment management — bank transfer reconciliation with invoice generation

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`.
 2. Activate the plugin through the “Plugins” menu in WordPress.
 3. Go to “Conference” in the admin menu to start configuring your event.

## FAQ

### Does this plugin charge any fees?

No. The plugin itself is free and GPL-licensed, and nothing in it is locked, time-
limited or unlocked by payment. It takes no percentage of anything you collect.

### Is there a paid version?

The plugin author distributes a separate Pro edition with additional features for
larger conferences. It is a different plugin, sold and updated outside WordPress.
org, and it is not required to use this one. No part of it is included here, and
no feature of this plugin is withheld pending an upgrade. The Conference > What’s
New screen lists what is in this plugin and what the Pro edition adds.

### Does the plugin support Japanese?

Yes. The plugin is fully internationalized and includes Japanese translations. PDF
documents use IPA fonts for proper Japanese rendering.

### What are the server requirements?

WordPress 6.9 or later, PHP 8.4 or later, and MariaDB 10.5 or later (or MySQL 8.0
+).

### How is personal data protected?

Email addresses, phone numbers, and postal addresses are encrypted with AES-256-
GCM before they are written to the database.

For the strongest protection, define `CONF_MANAGER_ENCRYPTION_KEY` in `wp-config.
php` before activating the plugin (it must be at least 16 characters; a shorter 
value is ignored and the fallback below is used instead). The key then lives outside
the database, so a database-only compromise — an SQL injection, or a leaked backup—
does not expose the key along with the data it protects.

If that constant is not defined, the plugin generates a random key on first activation
and stores it in `wp_options`, so that encryption works without any setup. This 
is the default. Note that the key then resides in the same database as the data 
it encrypts.

Conference  Setup shows which of the two modes your site is using.

Important: do not add or change the encryption key once the plugin has stored data.
Decryption always uses the key currently in effect, so replacing it makes existing
encrypted data permanently unreadable.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“ConferenceManager” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ creativestrategy24 ](https://profiles.wordpress.org/creativestrategy24/)

“ConferenceManager” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/conferencemanager/contributors)
for their contributions.

[Translate “ConferenceManager” into your language.](https://translate.wordpress.org/projects/wp-plugins/conferencemanager)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/conferencemanager/),
check out the [SVN repository](https://plugins.svn.wordpress.org/conferencemanager/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/conferencemanager/)
by [RSS](https://plugins.trac.wordpress.org/log/conferencemanager/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.6.6

 * Fixed: on invoices and receipts the name was printed above the organisation, 
   which left the honorific attached to the organisation rather than to the person—“
   University of X, School of Y 様” instead of “University of X, School of Y” on
   one line and “Taro Yamada 様” on the next. An honorific belongs to the person,
   and putting one on an organisation also reads oddly next to the form used for
   addressing an organisation as a whole. The organisation now comes first and the
   honorific follows the name. Documents are drawn when they are asked for rather
   than stored, so invoices and receipts issued before this version read the new
   way as well; their numbers are unchanged, so nothing is re-issued.

#### 1.6.5

 * Fixed: the settlement dialog opened with “Refunded the participant” already chosen
   and the difference already filled in, so a refund could be recorded by opening
   the dialog and pressing the button, even when no money had changed hands. On 
   one site this left four refunds of the same amount on a single payment, and the
   list then asked for an amount to be collected that had never been overpaid. The
   dialog now opens with nothing chosen, and no amount field, method or confirm 
   button appears until you say what the settlement is for. The purposes are grouped
   into ones where money moved and ones that only correct the record.
 * Added: a settlement entered by mistake can now be cancelled. Until this version
   nothing in the plugin could remove one, so a wrong entry stayed on the payment
   for good and kept distorting the amount shown as received. Cancelling removes
   it from the history and from every total, keeps the row in the database, and 
   writes all of its details to the audit log. A refund that also cancelled the 
   registration cannot be cancelled this way, because the registration and the payment
   status went with it.
 * Fixed: changing the purpose in the settlement dialog left the previous amount
   in the field. The field means the difference for a refund but the corrected total
   when correcting the record, so a difference of ¥1,000 could be submitted as a
   paid amount of ¥1,000 and overwrite what had actually been received. The amount
   is now replaced whenever the purpose changes, the correction shows what is currently
   recorded next to the field, and it asks for confirmation before overwriting.
 * Fixed: the difference column was coloured by the sign of the number, which made
   it the opposite colour to the status beside it — a payment marked “Refund due”
   in red showed its difference in amber. The four places that show a difference
   now take their colour from the same table as the status, and the column explains
   in words which way the difference goes.

#### 1.6.4

 * Fixed: if the record of when audit-log trimming was first set up went missing,
   the plugin treated the waiting period as already over and would have trimmed 
   on its next nightly run instead of waiting. It now starts the waiting period 
   again, so a missing record can never bring the trimming forward. In normal use
   the record is written when the plugin loads, so this was unlikely to be reached,
   but the outcome if it had been was immediate.

#### 1.6.3

 * Trimming of the audit log now waits two weeks before it starts, and says so on
   this plugin’s screens while it waits. Version 1.6.2 began trimming as soon as
   it was installed, which on a site that updates automatically meant there was 
   no moment at which anyone could object first. Nothing had been removed yet on
   any site, because the plugin has only been available since June. If you need 
   the records kept for longer, change the retention with a filter before the date
   shown in the notice.
 * The nightly trimming now works through more rows in one night, so a site with
   a long history catches up in days rather than months. Each individual statement
   is still bounded, which is what keeps it from holding a large transaction open.

#### 1.6.2

 * The audit log is now trimmed automatically. Until this version nothing ever removed
   entries from it, so on a site that had been running for a while it simply kept
   growing. Ordinary activity is kept for a year; entries that record sign-in attempts,
   rate limiting and blocked bots are kept for three years, because those are the
   ones you would need if you ever had to look into unauthorised access. Both periods
   can be changed with a filter.
 * The IP address and browser recorded alongside ordinary activity are now cleared
   after 90 days, while the entry itself is kept. Who did what, and when, is still
   recorded; only the personal details are dropped. Entries kept as a security record
   are left untouched, since removing the address would defeat the purpose of keeping
   them.
 * The trimming runs once a day and works through a bounded number of rows at a 
   time, so that the first run on a site with years of history cannot time out.

#### 1.6.1

 * The event editor now tells you, while you are still editing, when a fee category
   has been left in the table with no price for either participation type. Nobody
   can register under such a category, and until now the only warning came from 
   a notice after the event was already published. Categories you have removed from
   the table with the × button are not reported, since those are deliberately not
   offered.

#### 1.6.0

 * Added: member types can be shown with your society’s short name in front of them,
   for example “JXX Society_Regular Member”. Enter the name under Setup. At co-hosted
   events an attendee who belongs to a different society reads “Regular Member” 
   as their own and registers under it; naming the society makes it clear whose 
   category it is. Leave the field blank and member types are shown exactly as before.
   Only the display changes — nothing already recorded is altered, so registrations
   taken before and after the setting read the same way.
 * Added: the fee category is now shown on My Page under the registration’s participation
   type, and on invoices and receipts under the event name. Until now a participant
   had no way to see which category they had been registered under.
 * Fixed: the approval status in the member list looked like a link and was being
   clicked. It was set in the same colour WordPress uses for links, and because 
   the whole row opens the member for editing, anyone trying to act on the approval
   landed in the edit dialog instead. Approval is now shown as a plain badge, each
   row carries an Edit button, and the list says whether administrator approval 
   is on. Clicking the row still opens the member, as before.
 * Fixed: the event list had a “Publish” button sitting in the status column, which
   made the status itself look like something you could press to change. The four
   states are now badges, and Publish has moved to the actions at the end of the
   row alongside Edit. Clicking the row still opens the event.
 * On narrow screens the buttons in both lists are now tall enough to press with
   a finger, and the buttons on the participant list are arranged over two rows 
   so the invoice and receipt buttons no longer sit off the right-hand edge.
 * The payment export used its own list of member type names, written in Japanese,
   so the same category could read differently there than elsewhere and non-Japanese
   sites were given Japanese words. It now uses the same names as the rest of the
   plugin.
 * The same idea is now called “fee category” throughout in Japanese; the participant
   list previously used a different word for it than the documents did.

#### 1.5.1

 * Fixed: the notice listing events with a category that has no price set could 
   not be dismissed. It had a button, but pressing it did nothing, so the notice
   stayed on every admin screen until every event was edited.
 * Fixed: that notice missed events where a category was left in the table with 
   both its prices cleared. Such a category cannot be registered under, exactly 
   as if the row had been removed, but the notice only looked for missing rows.
 * The notice now checks every published event instead of stopping partway, so an
   event further down the list is no longer missed and reported as nothing to fix.
   It is shown on this plugin’s screens only, rather than on every admin page.
 * Fixed: staff could no longer be added to an existing group registration under
   a fee category that has no price set for it. The record kept for 1.5.0 covered
   individual registrations only, and group staff are held separately, so those 
   combinations were missed. They are recorded when this version is activated, exactly
   as individual registrations were.

#### 1.5.0

 * Security: invoices and receipts are no longer written to a public folder. They
   were saved under wp-content/uploads with sequential file names such as INV-202608-
   00001.pdf, and My Page linked straight to them, so anyone who guessed a number
   could read a document carrying a participant’s name, organisation and the amount
   they paid. Documents are now drawn when they are asked for and delivered through
   a check that the person asking is the one they belong to. Files already written
   are removed when this version is activated; nothing is lost, as the documents
   are rebuilt from your records. Updating is recommended.
 * Security: a shared internet connection no longer locks everyone out of self-registration.
   The limit on requesting a verification code counted every request from one address
   together and locked that address for an hour, so on an office or campus Wi-Fi
   the fourth person to sign up stopped everyone behind that connection. The limit
   is now far higher and any lock lasts ten minutes.
 * Security: once a rate limit locked an address, the lock renewed itself every 
   time anyone tried again, so the connection never recovered on its own. A lock
   now expires as intended.
 * Security: entering the verification code for self-registration no longer shares
   its limit with WordPress sign-in. One person mistyping their WordPress password
   could stop self-registration for everyone on the same connection, and the other
   way round.
 * Fixed: a member whose record was deleted, or an applicant who was rejected, could
   never register again with the same email address. Nothing on screen said why —
   the form simply reported that the member could not be created. The address and
   membership number are now released when the record is deleted, and addresses 
   released by earlier deletions are recovered when this version is activated.
 * Fixed: importing a CSV with “overwrite existing members” turned on cleared the
   phone number, address and membership number of anyone whose row left those columns
   blank. A blank cell now leaves the existing value alone. To clear a value, edit
   that member in Member Management.
 * The CSV template now contains all eleven columns the importer accepts, in the
   same order as the member export, so a file exported from Member Management can
   be edited and imported straight back. The three columns that were described but
   missing (membership number, phone, address) are included.
 * Added: invoices and receipts can now be issued from Payments and from Participants.
   Until now they could only be reached from the participant’s own My Page or from
   the payment confirmation email, so there was no way for an organiser to reissue
   one on request. Pressing the button twice does not create a second document under
   a new number.
 * Added: the payment date can now be entered when confirming a payment, on both
   Payments and Participants. It was previously recorded as the moment you confirmed
   it, which is the date that appears on invoices and receipts. Enter the date the
   money reached your account.
 * Fixed: searching members by keyword did not match the membership number, even
   though the field is described as searching it, so members could not be found 
   by their number.
 * Fixed: registering under a fee category or participation type with no fee set
   for it was accepted as free of charge and confirmed immediately, with no payment
   record created. Such a registration is now refused. Correcting a registration’s
   fee category already refused this; only new registrations let it through. A fee
   explicitly set to 0 is unaffected, as is an event with no fee table at all. Combinations
   that have actually been registered free of charge until now are recorded as an
   explicit 0 when this version is activated, so existing arrangements keep working.
 * The fee table on the event screen now says what it means. Tick “Free” to charge
   nothing, instead of typing 0 — a blank cell no longer means free, it means that
   participation type is not offered. Rows can be removed with ×, which stops that
   category being offered at all; members in it are offered the categories that 
   do have a price. A notice lists published events that still have a category with
   no price set.
 * Added: fee categories can now be added to the on-site (day-rate) fee table, and
   their names edited there. Previously the table only allowed deleting, and the
   only way to put a category back was to copy every advance price over it.
 * Verification code emails now say where to enter the code, with a link to My Page.
   They previously gave the code and asked you to enter it on the sign-in page without
   saying where that was.
 * A phone number is now required when creating a member from the admin screen. 
   Importing a CSV and editing an existing member are unaffected, so lists without
   phone numbers still import and members already saved without one can still be
   edited.
 * Outgoing mail now gives up after 15 seconds instead of the five minutes the mail
   library allows by default, so a slow mail server no longer leaves the visitor’s
   screen waiting. Self-registration now reports a failure to send instead of saying
   the message was sent.
 * The “Resend verification code” button now waits a minute between presses, and
   both screens say that mail can take a few minutes to arrive and to check the 
   spam folder. Each press used part of the sending allowance, so repeated presses
   could stop the sender, and on a shared connection everyone else.

#### 1.4.1

 * Fixed the buttons on My Page (Invoice, Receipt, Edit addressee, Save, Cancel)
   losing their text colour to the theme. Some themes style links inside post content
   with a rule that outranks the plugin’s own, which left the button text in the
   theme’s link colour with an underline while the button’s background stayed as
   it was — so the text could end up unreadable against it. The button colours themselves
   are unchanged.

#### 1.4.0

 * Credit card payment (Stripe) is now a feature of the separately distributed Pro
   edition and has been removed from this plugin. If you were taking card payments
   here, you will need the Pro edition to continue; bank transfer is unaffected.
   Nothing else changes, and no data is removed: existing card payments stay in 
   the payment list, in the totals and on invoices and receipts exactly as before.
 * Refunding a card payment recorded before this release now records the refund 
   only. The money is not returned automatically any more — refund it in your payment
   provider yourself. The screen says so before you confirm.
 * If “Credit Card” was selected in Conference  Setup, it is no longer offered on
   the registration form, so nobody can choose a payment method that cannot be completed.
   Bank transfer is used instead.
 * Removed the Stripe PHP library and the Stripe JavaScript packages from the plugin,
   which makes the download about 3.5 MB smaller.
 * Conference  Setup no longer describes an automatically generated encryption key
   as needing nothing further. When the key is not defined in wp-config.php the 
   plugin stores it in the database, next to the data it protects, so it offers 
   limited protection if a database backup is leaked. The screen now says so, and
   shows how to move the key out of the database. Encryption itself is unchanged
   and still works either way; this is a correction to what the screen told you,
   not to how your data is stored.

#### 1.3.0

 * Security: removed the unused passkey (WebAuthn) sign-in endpoints. Signing in
   with a passkey was never available anywhere in this plugin’s interface and could
   not be used, but the endpoints themselves were reachable and did not check what
   they were given as thoroughly as they should have. Updating is recommended. Registering
   a passkey, which requires a logged-in WordPress user, is untouched, and signing
   in to My Page with a one-time code is unaffected.
 * Removed a My Page code path that looked for a passkey session token where one
   was never stored, so it could never match anything. The “can edit” flag it fed
   was already always off, so nothing changes for anyone signing in with a one-time
   code.
 * Corrected the feature list here and the What’s New screen in the admin, both 
   of which described signing in to My Page with a passkey. That has never been 
   available in this plugin; My Page sign-in uses a one-time code sent by email.
 * Security: CONF_MANAGER_TRUSTED_PROXY no longer accepts a prefix length of 0. 
   A range that wide covers every address on the internet, which is never what a
   proxy is, so it is now refused like any other invalid value. Sites that have 
   not set this constant, and sites that have set it correctly, are unaffected.
 * Fixed: the Participants screen showed the billed amount without tax, while the
   Payments screen, invoices, receipts and the settlement difference all include
   it. The same registration appeared to cost 10% less (8% for events on that rate)
   depending on which screen you looked at. The records themselves were always correct;
   only this column and the edit dialog were wrong.
 * Fixed: payment dates were shown and exported in UTC. In Japan that put every 
   payment confirmed between midnight and nine in the morning on the previous day.
   The Payments list, the payment detail dialog and the payments CSV now use the
   timezone set in Settings  General.
 * Fixed: filtering payments by date compared local dates against those UTC values,
   so asking for a day’s payments left out anything received before nine that morning.
   The day is now converted before it is compared. (This filter is available through
   the REST API only; there is no field for it on the screen.)
 * Fixed: when a request failed, some screens showed an empty red notice, or the
   words “API Error”, with nothing to say whether the problem was a permission, 
   a server error or a dropped connection. Those messages now carry the reason and
   the status code.

#### 1.2.5

 * Fixed: marking a participant as paid from the Participants screen did not record
   the payment itself. The registration showed as paid while the payment stayed 
   unreconciled, so it was missing from the Payments screen and from the amount 
   received, and a receipt could not be issued for it at all. Marking a participant
   paid now reconciles their outstanding payment, at the billed amount. Payments
   reconciled from the Payments screen keep the amount actually received, as before.
 * Security: forwarding headers such as X-Forwarded-For are no longer trusted unconditionally.
   Anyone could previously send one naming any address they liked, which meant they
   could get an innocent third party locked out of login or one-time codes, write
   that third party into the audit log in place of themselves, and leave no record
   of where the request actually came from. Headers are now used only when the connection
   arrives from a proxy the site trusts: one declared in wp-config.php, a private
   or reserved address (a reverse proxy on the same host), or a Cloudflare address
   range. Otherwise the connecting address is used and the header is discarded.
 * Security: a mistyped trusted-proxy range such as 198.51.100.0/ or 198.51.100.0/
   abc was read as /0 and matched every address, which turned the protection above
   completely off without any sign that it had. The prefix length must now be digits.
 * Sites behind a CDN or reverse proxy other than Cloudflare: if a forwarding header
   is ignored and doing so changes which address the plugin sees, an admin notice
   now says so and shows the exact define() line to add to wp-config.php, using 
   the range the page was opened from. The notice can be dismissed if no proxy is
   in front of the site. Sites with no proxy, and sites behind Cloudflare, need 
   to do nothing.
 * Fixed: invoices and receipts printed “Consumption tax (10%)” whatever the event’s
   tax rate was, so a tax-exempt event produced a document reading “Consumption 
   tax (10%): ¥0”. The printed rate is now the one that accounts for the printed
   amount, so the rate, the net amount and the tax on the document always agree.
 * Privacy: uninstalling with data removal enabled now clears plugin options and
   transients by prefix rather than from a fixed list. A list misses whatever was
   added since it was written — in this case the bounced-email record, which is 
   keyed by email address and was left behind in the database. My Page session and
   passkey tokens are also cleared, so a removed plugin cannot leave a usable way
   in. Uninstall still keeps your data by default; nothing is removed unless you
   opt in.
 * Tested up to WordPress 7.1. The test suite now runs on WordPress 7.1 and on 6.9,
   the oldest version this plugin supports.

#### 1.2.4

 * Fixed: a shortcode naming a view that only exists in the Pro edition — for example[
   conf_manager view=”reviewer-apply”] or view=”sponsors” — quietly displayed the
   attendee registration form instead. Anyone opening what was meant to be a reviewer
   application or a sponsor listing could submit a registration, and it was recorded
   as a real one. Those views now stop instead of falling back, and a note explaining
   why is shown to users who can edit the page. A mistyped view name still falls
   back to the registration form, as before.
 * Fixed: the one-time code for My Page was limited to 3 requests per hour per IP
   address, with a one hour lockout. At a university, a company or a conference 
   venue, where many people share a single public IP address, the fourth person 
   to request a code locked everyone out for an hour. Because the send itself was
   refused, no code arrived and the cause was invisible from the organiser’s side.
   The limit is now 50 per hour with a ten minute lockout, while the existing per-
   address limit of 5 per hour continues to stop abuse aimed at one mailbox.

#### 1.2.3

 * Fixed: exporting members to CSV returned at most 100 rows. The export asked for
   up to 10,000, but the underlying search caps a request at 100, so the file was
   silently short — it looked like a complete export. It now pages through every
   matching record. If an export ever reaches the 20,000 row safety limit, the file
   says so on its last line instead of ending quietly.
 * Fixed: lists that page through records were ordered by a value that repeats —
   the date a record was created, or an event’s start date. Rows sharing that value
   have no guaranteed order between pages, so a record could appear twice or be 
   passed over. Every paged list now falls back to the record id, which is unique.
 * Fixed: after a successful encryption key rotation the plugin still warned that
   data could not be read, because it kept comparing against the previous key. The
   warning is now cleared when the rotation completes with no errors — and deliberately
   kept when any record failed, since that is exactly when the warning is worth 
   seeing.

#### 1.2.2

 * Fixed: the encryption key warning told every site to restore the key in wp-config.
   php, even when the key was never kept there. Sites installed with the default
   settings keep an automatically generated key in the database instead, so that
   advice sent administrators looking for something that was not there. The warning
   now says where the key actually is.
 * Fixed: in the most common way this warning appears — adding the CONF_MANAGER_ENCRYPTION_KEY
   constant to wp-config.php on a site that had been running on the automatically
   generated key — the previous key is still held in the database, and the warning
   now says so and how to put it back. That case is fully recoverable in one step;
   it previously read as though the data were lost.
 * Security: dismissing the encryption key warning now requires submitting the form’s
   button. It was previously a link, and a link that changes state can be followed
   by a browser or extension prefetching it, which would have moved the reference
   point forward and removed the warning without anyone clicking it — erasing the
   only sign that the key had changed. Requests that are not form submissions are
   refused.
 * Fixed: the key rotation routine paged through records by position rather than
   by record, while updating those same records as it went. Nothing guaranteed the
   order between pages, so a record could be passed over and left encrypted with
   the previous key. It now advances by record id, and stops if a page fails to 
   advance.

#### 1.2.1

 * Security: the plugin now notices when the encryption key changes and says so 
   in the admin area. Personal data encrypted with the previous key cannot be read
   until that key is restored — the data is intact, but nothing in the plugin can
   recover it on its own, so the warning appears while the mistake is still easy
   to undo. Only a hash of the key is stored; the key itself never is.
 * Fixed: the key rotation routine skipped any table without a “status” column and
   still reported success, which would have left some records readable only with
   the old key.
 * The Setup screen no longer claims that encrypted data is unreadable if the database
   is compromised, regardless of where the key is kept. That is true only when the
   key is defined in wp-config.php. With the default automatic key, the key lives
   in the same database as the data, and the screen now says so.
 * The readme’s answer on personal data protection now states which key location
   is recommended and why, that a key shorter than 16 characters is ignored, and
   that adding or changing the key after data has been stored makes existing data
   permanently unreadable.
 * Removed unused code that generated a fresh encryption key. It was never reachable,
   but wiring it up would have made existing encrypted data unrecoverable.

#### 1.2.0

 * New: a “What’s New” screen under the Conference menu, listing what this plugin
   can do — newest additions first, with the version each one arrived in — followed
   by what the separately distributed Pro edition adds. The screen is static: it
   renders no images, makes no external requests, and stores nothing.
 * The readme now states plainly that a separate Pro edition exists. This plugin
   is unchanged in what it does: every feature it ships remains fully functional,
   and none of the Pro edition’s code is included in this package.

#### 1.1.12

 * Fix: sites that had already skipped a database upgrade are now repaired. Before
   1.1.11, activating the plugin recorded the schema version without running the
   pending upgrades, which left the recorded version up to date while the data was
   not. Because the version already looked current, 1.1.11 alone could not detect
   or repair those sites. This release re-runs the 1.1.9 and 1.1.10 data upgrades
   once, so the amount actually received is filled in and refunds made before 1.1.9
   are moved into the settlement ledger. Both steps only touch rows that were never
   migrated, so sites that are already correct are left untouched.
 * Database schema auto-upgrades to v3.4.0.

#### 1.1.11

 * Fix: pending database migrations were skipped when the plugin was updated by 
   deactivating it, replacing the folder and activating it again. Activation stamped
   the schema version without running the migrations, so the upgrade steps introduced
   in 1.1.9 and 1.1.10 never ran on those sites. Activation now runs them. This 
   stops the problem from happening again, but it does not recover a site that had
   already skipped a migration — see 1.1.12, which does. Sites updated through the
   normal WordPress plugin updater were never affected.

## Meta

 *  Version **1.6.6**
 *  Last updated **3 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.9 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 8.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/conferencemanager/) and [Japanese](https://ja.wordpress.org/plugins/conferencemanager/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/conferencemanager)
 * Tags
 * [academic](https://bcc.wordpress.org/plugins/tags/academic/)[Conference](https://bcc.wordpress.org/plugins/tags/conference/)
   [Event](https://bcc.wordpress.org/plugins/tags/event/)[payment](https://bcc.wordpress.org/plugins/tags/payment/)
   [registration](https://bcc.wordpress.org/plugins/tags/registration/)
 *  [Advanced View](https://bcc.wordpress.org/plugins/conferencemanager/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/conferencemanager/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/conferencemanager/reviews/)

## Contributors

 *   [ creativestrategy24 ](https://profiles.wordpress.org/creativestrategy24/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/conferencemanager/)