Title: Custom Guest Authors
Author: Mohd Elfie Nieshaem Juferi
Published: <strong>Pébruari 17, 2026</strong>
Last modified: Maret 10, 2026

---

Search plugins

![](https://ps.w.org/custom-guest-authors/assets/icon.svg?rev=3466223)

# Custom Guest Authors

 By [Mohd Elfie Nieshaem Juferi](https://profiles.wordpress.org/menj/)

[Download](https://downloads.wordpress.org/plugin/custom-guest-authors.2.3.1.zip)

 * [Details](https://su.wordpress.org/plugins/custom-guest-authors/#description)
 * [Reviews](https://su.wordpress.org/plugins/custom-guest-authors/#reviews)
 *  [Installation](https://su.wordpress.org/plugins/custom-guest-authors/#installation)
 * [Development](https://su.wordpress.org/plugins/custom-guest-authors/#developers)

 [Support](https://wordpress.org/support/plugin/custom-guest-authors/)

## Description

The Custom Guest Authors plugin (developed and maintained by [Mohd Elfie Nieshaem Juferi](https://menj.blog))
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](https://www.wpbeginner.com/wp-tutorials/how-to-rewrite-guest-author-name-with-custom-fields-in-wordpress/).

**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.

## Screenshots

 * [[
 * [[
 * [[

## Installation

 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.

## FAQ

### 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.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Custom Guest Authors” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Mohd Elfie Nieshaem Juferi ](https://profiles.wordpress.org/menj/)

[Translate “Custom Guest Authors” into your language.](https://translate.wordpress.org/projects/wp-plugins/custom-guest-authors)

### Interested in development?

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

## Changelog

#### 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.

## Meta

 *  Version **2.3.1**
 *  Last updated **1 month ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.7 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 8.2 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/custom-guest-authors/)
 * Tags
 * [byline](https://su.wordpress.org/plugins/tags/byline/)[custom fields](https://su.wordpress.org/plugins/tags/custom-fields/)
   [guest author](https://su.wordpress.org/plugins/tags/guest-author/)[multiple authors](https://su.wordpress.org/plugins/tags/multiple-authors/)
 *  [Advanced View](https://su.wordpress.org/plugins/custom-guest-authors/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/custom-guest-authors/reviews/)

## Contributors

 *   [ Mohd Elfie Nieshaem Juferi ](https://profiles.wordpress.org/menj/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/custom-guest-authors/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://paypal.me/menj)