Custom Guest Authors

Plugin Banner

Custom Guest Authors

by Mohd Elfie Nieshaem Juferi

Download
Description

The Custom Guest Authors plugin (developed and maintained by Mohd Elfie Nieshaem Juferi) lets you replace the WordPress post author display name with one or more custom guest author names, stored as post meta. No separate WordPress user accounts are required. Ideal for sites that publish content from external contributors, translators, or collaborative authors.

Guest author names are set directly from the post editor via a dedicated sidebar panel — available in both the classic editor and the Gutenberg block editor. The raw guest-author custom field key also works for programmatic or WP-CLI workflows.

This plugin was inspired by a tutorial from WPBeginner.

Features

Author name override

  • Replaces the WordPress post author name with a custom guest author name on the front end.
  • Supports multiple authors — enter names separated by commas (e.g. John Doe, Jane Smith).
  • Three join styles for multi-author display: Natural (A, B and C), Comma (A, B, C), Ampersand (A & B & C).
  • Optional site-wide fallback name shown on posts with no per-post guest author set.
  • Works with both classic themes (via the_author filter) and block/FSE themes (via get_the_author_display_name filter).

Post type support

  • Applies to any combination of public post types — Posts, Pages, and any registered custom post type.
  • Post type selection is configurable from the General tab in Settings.

Display control

  • Apply the override everywhere (singles, archives, feeds) or restrict it to single post views only.
  • Author archive links are automatically suppressed when a guest author is active — guest authors are not WordPress users and have no author archive.

Structured data

  • Optional suppression of the author property from JSON-LD schema output.
  • Compatible with Yoast SEO (wpseo_schema_graph filter) and Rank Math (rank_math/schema/article filter).

Performance

  • Author name lookups are cached per post using WordPress transients (default lifetime: 12 hours, configurable from 1 to 168 hours).
  • Cache is invalidated immediately on post save, and on any direct post meta add, update, or delete — including REST API and WP-CLI writes.
  • Cache is automatically flushed on plugin update to clear stale entries from older installs.

Settings

Settings are available at Settings › Guest Authors, organised across four tabs:

  • General — fallback guest author name, active post types.
  • Display — multi-author join style, show override on singular or all views, live preview.
  • Advanced — cache lifetime, JSON-LD schema suppression toggle.
  • Debug — live diagnostics panel, system information, cache status, and a manual post-ID tester.

Translation

  • Bundled Malay (Malaysia) translation (ms_MY).
  • All strings are internationalised and ready for translation via a .pot template file.
  1. Download the plugin zip file.
  2. In your WordPress admin, go to Plugins › Add New › Upload Plugin.
  3. Choose the zip file and click Install Now, then Activate.

Alternatively, install manually:

  1. Upload the custom-guest-authors folder to /wp-content/plugins/.
  2. Go to Plugins in your WordPress admin and activate Custom Guest Authors.

After activation:

  • Go to Settings › Guest Authors to configure the plugin — select which post types should support the override, set an optional fallback name, and adjust display and cache settings.
  • Edit any post of an enabled post type. The Guest Authors panel appears in the right-hand sidebar of both the classic and block editors. Enter one name or multiple names separated by commas, then save the post.
Which post types does the plugin support?

By default, the override applies to Posts only. To enable it for Pages or any registered custom post type, go to Settings › Guest Authors › General and check the post types you want. All public post types registered on your site are listed.

How do I set a guest author on a post?

Edit any post of an enabled type. A Guest Authors panel appears in the right-hand sidebar — in the Document panel for the block editor, or as a meta box in the classic editor. Enter one or more names separated by commas and save the post.

How do I set multiple authors?

Enter names separated by commas in the Guest Authors field, e.g. Zamri Vinoth, Firdaus Wong, Ali Hassan. The display format is controlled by the Join Style setting on the Display tab: Natural (Zamri Vinoth, Firdaus Wong and Ali Hassan), Comma (Zamri Vinoth, Firdaus Wong, Ali Hassan), or Ampersand (Zamri Vinoth & Firdaus Wong & Ali Hassan).

Can I set a fallback name that applies to all posts?

Yes. Go to Settings › Guest Authors › General and enter a name in the Fallback Guest Author Name field. This name is shown on any post of an enabled type that has no per-post guest author set. Leave it blank to fall back to the WordPress post author on those posts.

Does this work with block themes and the Full Site Editor?

Yes. The plugin hooks both the_author (used by classic themes) and get_the_author_display_name (the dynamic filter used by block themes via get_the_author_meta( 'display_name' )). This covers all Twenty Twenty-One through Twenty Twenty-Five themes and all FSE themes that use the core/post-author or core/post-author-name blocks.

Does this work with page builders?

Yes, provided the page builder reads the author via the_author(), get_the_author(), or get_the_author_meta( 'display_name' ). This covers Elementor, Beaver Builder, Divi, WPBakery, Kadence, Astra, and GeneratePress, among others.

Can I use the raw custom field directly instead of the editor panel?

Yes. The meta key is guest-author. You can set it via the raw Custom Fields panel (if enabled), programmatically with update_post_meta(), or via WP-CLI. The editor panel is a convenience wrapper over the same key.

Will the guest author name appear on archive pages and in feeds?

By default, yes — the override applies everywhere the author name is displayed. To restrict it to single post pages only, go to Settings › Guest Authors › Display and set Show Override On to Single posts only.

What happens to the author archive link?

When a guest author is active on a post, the author archive URL is automatically suppressed. Guest authors are not WordPress users and have no author archive. The author name is displayed as plain unlinked text.

Does the plugin affect structured data / JSON-LD schema?

Not by default. If you want to remove the author property from JSON-LD schema output, enable the Suppress author from JSON-LD schema toggle on the Advanced tab. This works with both Yoast SEO and Rank Math.

The guest author name is not updating after I changed it. What should I do?

The plugin caches author names per post using WordPress transients. The cache is cleared automatically whenever a post is saved. If you are updating meta programmatically (e.g. via WP-CLI or a migration script), the cache is also cleared on any added_post_meta, updated_post_meta, or deleted_post_meta action. If names are still stale, go to Settings › Guest Authors › Debug and click Clear Cache to flush all cached entries immediately.

How long are author names cached?

The default cache lifetime is 12 hours. You can change this from 1 to 168 hours under Settings › Guest Authors › Advanced. The cache is always invalidated immediately on post save regardless of the TTL.

Does the plugin leave anything behind when deleted?

No. Deleting the plugin via the WordPress Plugins screen runs uninstall.php, which removes all plugin options (cga_default_guest_author, cga_enabled_post_types, cga_join_style, cga_apply_on, cga_cache_ttl, cga_suppress_schema, cga_cache_version) and all cga_* transients from the database.

Is there a Debug tab?

Yes. The Debug tab at Settings › Guest Authors › Debug runs a live diagnostics check on the server: it verifies that filter hooks are registered, checks whether the guest-author meta is set on the most recent published post, confirms that the post type is in the enabled list, tests whether custom-fields support is declared (required for Gutenberg meta writes), and simulates the filter output. A manual post-ID tester lets you check any specific post by ID. A Clear Cache button is also available.

The plugin is not working on my block theme. What should I check?

Open Settings › Guest Authors › Debug and look at the diagnostics table. Confirm that both the_author and get_the_author_display_name filters show as registered. Confirm that the post type is listed as enabled and that custom-fields support is shown as active. If the post type does not support custom fields, the Gutenberg panel will accept input but silently discard it on save — enabling the post type on the General tab corrects this automatically.

Is the plugin compatible with Yoast SEO and Rank Math?

Yes, for the optional schema suppression feature. When Suppress author from JSON-LD schema is enabled on the Advanced tab, the plugin removes the author property from Article-type schema nodes via wpseo_schema_graph (Yoast SEO) and rank_math/schema/article (Rank Math). The author name override itself works independently of any SEO plugin.

Is the plugin translation-ready?

Yes. All strings are wrapped in WordPress i18n functions. A Malay (Malaysia) translation (ms_MY) is bundled. A .pot template file is included for community translations.

2.3.1

  • Fixed: Plugin Check audit warnings for unprefixed variables in uninstall.php and the admin view templates. All variables are confirmed to be function-scoped; inline PHPCS directives added as Plugin Check does not honour phpcs.xml exclusion patterns for this rule.
  • Fixed: Direct database query in uninstall.php now carries the correct inline suppression annotations, consistent with equivalent queries elsewhere in the plugin.

2.3.0

  • Improved performance: the plugin now reads its settings once per page load instead of making repeated database lookups, reducing overhead on busy sites.
  • Fixed: the author name cache count shown on the Debug tab could display an outdated number immediately after clearing the cache. It now always reflects the current state.
  • Fixed: toggling the “Suppress author from JSON-LD schema” option now takes effect without requiring a full server restart or cache flush.
  • Fixed: on block-theme sites, the manual post tester on the Debug tab no longer risks leaving behind a corrupted global state if an error occurs mid-test.
  • Improved reliability: the Gutenberg sidebar icon no longer depends on WordPress’s built-in icon font, making it compatible with environments where that font is not loaded.
  • Under the hood: several small code quality improvements to keep the plugin tidy and easier to maintain going forward.

2.2.0

  • Improved: the plugin now cleans up all of its data (settings and cached names) when it is deleted from WordPress, leaving no orphaned data behind.
  • Improved: the classic editor author field no longer requires jQuery, reducing the number of scripts loaded on your edit screen.
  • Improved: the plugin is now fully compatible with stricter WordPress hosting environments and passes Plugin Check without warnings.

2.1.0

  • New look: the settings page has been redesigned with a dark header, cleaner tab navigation, and a more consistent style that matches the other MENJ plugins. A credit link to the developer has been added at the bottom of each tab.

2.0.9

  • Fixed: when “Show Override On” was set to “Singular only”, guest author names were still appearing on category, tag, and date archive pages on block-based themes. This affected Twenty Twenty-One through Twenty Twenty-Five and most modern page builders.
  • Fixed: the author name displayed in the block editor sidebar panel could briefly show the wrong name on the first render when switching between posts.
  • Under the hood: shared helper functions introduced to eliminate repeated code, making the plugin smaller and easier to maintain.

2.0.8

  • New: the Debug tab now includes a live diagnostics panel. It checks that all filters are registered correctly, confirms the guest author meta is saved for a given post, and lets you run a filter simulation directly from the settings page — useful for troubleshooting without needing FTP access or a code editor.
  • Fixed: author name substitution was not working at all on block-based themes (Twenty Twenty-One through Twenty Twenty-Five, and any Full Site Editing theme). The plugin was hooking into an internal WordPress function that does not exist. This has been corrected and guest author names now display reliably on all themes.
  • Fixed: the default guest author name was not appearing on archive and listing pages even when it should have been.
  • Fixed: plugin upgrades now automatically clear any leftover cached data from older versions, preventing stale names from persisting after an update.

2.0.4

  • Fixed: guest author names entered in the block editor (Gutenberg) sidebar were being silently discarded on save. They now save correctly for all enabled post types.

2.0.2

  • Improved: the plugin has been split into separate files that load only when needed. Admin-related code no longer runs on the front end of your site, reducing the processing cost of every page view.
  • Fixed: author names containing special characters such as & or < were displaying as garbled code (e.g. &amp;) on some themes.

2.0.1

  • Fixed: the plugin could not be activated at all due to a syntax error introduced in the previous build. This has been resolved.
  • Fixed: the bundled Malay translation was not loading. It now loads correctly on sites running the ms_MY locale.
  • Security: improved input handling on the settings page to follow WordPress best practices.

2.0.0

  • New: the settings page has been completely redesigned with a tabbed layout, colour-coded cards, and a dedicated Debug tab.
  • New: the Debug tab includes a Cache Status card showing how many author names are currently cached, with a one-click Clear Cache button.

1.9.1

  • Improved: the plugin now fully passes WordPress Plugin Check with no warnings. PHP 8.2 set as the minimum supported version.

1.8.9

  • Fixed: clicking a join style or post type option on the settings page showed no visual response — the card highlight was not updating. Now responds immediately on click.
  • Fixed: the author name preview on the Display tab was not updating when you switched between join styles. It now updates live without saving.
  • Fixed: the settings page sometimes forgot which tab you were on after saving. It now reliably returns to the correct tab.

1.8.1

  • Fixed: the author name field in the classic editor was not appearing for post types other than Posts and Pages, even when those types were enabled in settings.
  • Fixed: the “Suppress author from schema” toggle was not saving correctly when turned off.
  • Fixed: enabling all post types and then disabling all of them could not be saved; at least one type was always being re-enabled. This has been corrected.

1.8.0

  • New: choose which post types the guest author override applies to — not just Posts and Pages.
  • New: control how multiple guest authors are joined: natural language (A, B and C), comma-separated (A, B, C), or ampersand-separated (A & B & C).
  • New: restrict the override to single post views only, or apply it everywhere.
  • New: set a custom cache lifetime for author names (default 12 hours).
  • New: option to remove the author from JSON-LD structured data (compatible with Yoast SEO and Rank Math).
  • New: basic debug information table showing plugin status, active settings, and WordPress/PHP versions.

1.7.5

  • New: Malay (Malaysia) translation bundled. The word “and” in multi-author names will display as “dan” on Malaysian WordPress sites.
  • Removed: the author name prefix option (e.g. “By John Doe”) has been removed. It was producing doubled output because most themes already add their own label.
  • Fixed: guest author names are now displayed as plain text without a hyperlink, since guest authors do not have WordPress user accounts or author archive pages.

1.7.2

  • Improved: the settings page has been redesigned to match the visual style of the other plugins in the MENJ suite — consistent colours, icons, and layout.

1.7.1

  • New: settings page added under Settings › Guest Authors, with a default guest author field, a live preview of how author names will appear, and options for separators and prefixes.

1.6.2

  • Fixed: the author field was appearing twice in the block editor on some post types.
  • Fixed: a JavaScript error in the block editor sidebar panel on initial load has been resolved.
  • Fixed: compatibility updated for WordPress 6.5 and later, which changed how block editor detection works.

1.6

  • New: author field now appears in both the classic editor and the block editor (Gutenberg).
  • New: author data is accessible to the WordPress REST API, enabling future integrations.
  • New: plugin assets (styles and scripts) are now properly separated and loaded only where needed.

1.5

  • Fixed: changing a guest author name now takes effect immediately after saving, without needing to manually clear the cache.

1.2

  • New: you can now list multiple guest authors in one field, separated by commas.

1.1

  • New: author names are now cached for better performance. Input is sanitized and output is escaped for security.

1.0

  • Initial release.
Back to top