Plugin Version Display (PVD)

This is the core plugin for running your own plugin marketplace.

This parses, cleans & displays your sellable plugin’s version, size, status, help docs and more in one place. You update once & your licensed customers have real-time access. Versions are monitored by WordPress’ core, so updating is done through the native plugin page. Plugin works independently, or with PVD + EDD Integration.

DEMO BELOW:

All the content below the orange line is parsed from this plugin’s own header info, README’s, changelogs and TODO docs. You can choose which sections are parsed and the order they display while smart file prioritization prevents repetition. Code is stripped, de-curly-quoted and formatted so customers can cut & paste from your help docs without issues. Use shortcodes or blocks in single posts or query loops. There’s parameters to modify everything.

*This is also the core plugin required to begin running your own plugin marketplace.

Active 3.0.3 25 KB updated: 04/21/2026 9:11 PM

This WordPress plugin allows you to display detailed information about any installed plugin, including version, last modified date, activation status, and excerpts from readme files. It can automatically find and parse README.md, changelog.txt, and TODO.md files in plugin directories.

Key Features:

  • Parses plugin version, status, mod dates, installation, helpdocs, changelogs and more
  • Custom Sections: Specify any section from plugin readme files
  • Section Ordering: declare the order sections are displayed
  • Translates & styles standardized readme hierarchy structure
  • File Detection: Automatically finds README.md, changelog.txt, and TODO.md files
  • Smart Prioritization: Different section types prioritize different files
  • Shortcode Support: Easy-to-use shortcodes for posts and pages
  • Gutenberg Block: Server-rendered block for the block editor
  • Performance Optimized: Conditional loading of assets and modular architecture
  • Shortcode/code escaping to prevent execution
  • De-curly quoted for better copy & paste
  • Upload the steves-version-display folder to the /wp-content/plugins/ directory
  • Activate the plugin through the ‘Plugins’ menu in WordPress
  • Use the shortcodes or Gutenberg block to display plugin information

Basic Usage

Display basic plugin information:

[plugin_version slug="my-plugin"]

Display with additional details:

[plugin_version slug="my-plugin" show_date="true" show_changelog="true"]

Advanced Usage

Display readme sections:

[plugin_version slug="my-plugin" show_description="true" show_installation="true" show_usage="true"]

Display all standard sections:

[plugin_version slug="my-plugin" show_description="true" show_installation="true" show_usage="true" show_changelog="true"]

Display with section titles:

[plugin_version slug="my-plugin" show_description="true" show_titles="true"]

Display TODO sections:

[plugin_version slug="steves-version-display" show_todo="true"]

Display custom sections:

[plugin_version slug="my-plugin" custom_sections="Features,Requirements"]

Setting Up Custom Fields
  • In the WordPress post editor, add a custom field with:
  • Name/Key: plugin_slug
  • Value: The plugin’s slug (e.g., woocommerce, contact-form-7, steves-version-display)
  • You can add custom fields using:
  • The “Custom Fields” meta box in the classic editor
  • The “Custom Fields” panel in the Gutenberg editor
  • A custom fields plugin like Advanced Custom Fields
Styling

The plugin includes CSS classes for easy customization:

Main Plugin Elements

  • .pvd-plugin-info: Main container
  • .pvd-status: Status badge (active/inactive/not-installed)
  • .pvd-version: Version number
  • .pvd-date: Last modified date
  • .pvd-repo-link: Repository link
  • .pvd-readme-section: Readme section container
  • .pvd-description: Description section
  • .pvd-installation: Installation section
  • .pvd-usage: Usage section
  • .pvd-screenshots: Screenshots section
  • .pvd-todo: TODO section
  • .pvd-custom-section: Custom section
  • .pvd-changelog: Changelog section

Automatic Text Formatting

The plugin automatically applies styling to special text patterns in readme content:

  • .pvd-backtick-inline: Single backticks – styled as bold inline code
  • .pvd-backtick-block: Triple backticks – styled as code blocks with background and border
  • .pvd-double-asterisk: Double asterisks (bold text) – styled as bold text
Shortcode Parameters

Core Parameters

  • slug: Plugin slug (folder name or main file name without .php)
  • show_date: Display last modified date/time (default: false)
  • show_changelog: Display changelog excerpt (default: false)
  • changelog_lines: Number of changelog lines to display (default: 8, use 0 for unlimited)
  • show_status: Display active/inactive status badge (default: true)
  • link_repo: Add link to WordPress.org plugin page (default: false)
  • repo_text: Custom text for repo link (default: “View on WP.org”)
  • show_zip_size: Display zipped file size if steves-folder-zip plugin is active and zip exists (default: false)

Readme Section Parameters

  • show_description: Display Description section from readme files (default: false)
  • show_installation: Display Installation section from readme files (default: false)
  • show_usage: Display Usage section from readme files (default: false)
  • show_screenshots: Display Screenshots section from readme files (default: false)
  • show_todo: Display TODO section from TODO.md or readme files (default: false)
  • custom_sections: Comma-separated list of custom section names to display, optionally with line limits (e.g., “Features:15,Requirements:10”) (default: “”)
  • show_titles: Display section titles above content (default: false)
  • section_order: Comma-separated order of sections (default: “description,installation,usage,screenshots,todo,changelog”)

Meta Shortcode Parameters

  • post_id: Specific post ID to get meta from (default: current post)
  • meta_key: Meta key containing the plugin slug (default: “plugin_slug”)
  • debug: Enable debug output (default: false)
Full Shortcode Example

This is an example of a fully populated shortcode.

[plugin_version slug="my-plugin" show_usage="true" escape_shortcodes_in_usage="true" custom_sections="example-one,example-two" section_order="description,installation,usage screenshots,todo,example-custom-section-one,example-custom-section-two,changelog" show_zip_size="false" show_description="true" show_installation="true" show_usage="true" show_screenshots="true" show_todo="true" show_date="false" show_changelog="true" show_status="false" link_repo="false" changelog_lines="10" repo_text="Visit Our Example Repository" ]

Full Loop Example

This will display plugin information for each post in your query loop, pulling the plugin slug from each post’s custom field.

[plugin_version_meta meta_key="plugin_slug" show_date="true" show_changelog="true" show_status="true" show_description="true" show_installation="true" show_usage="true"]

Demo In Action

In shortcode, these are the settings for the current Version Display demo page.

[plugin_version slug="steves-version-display" show_date="true" show_status="true" show_zip_size="true" link_repo="false" repo_text="Find on WordPress Repository" show_description="true" show_installation="true" show_usage="true" show_todo="false" show_titles="true" custom_sections="Shortcode Parameters:50,Full Shortcode Example:8,Full Loop Example:10,Demo In Action:10,Styling,File Detection and Parsing:50,Setting Up Custom Fields" section_order="description,installation,usage,Shortcode Parameters,Full Shortcode Example,Demo In Action,Shortcode Parameters,Full Shortcode Example,Setting Up Custom Fields,Full Loop Example,Demo In Action,Styling,File Detection and Parsing" show_changelog="false" changelog_lines="0" debug="false"]

File Detection and Parsing

The plugin automatically searches for documentation files in the following order:

For TODO sections:

  • TODO.md (prioritized)
  • readme.txt
  • README.md
  • changelog.txt

For changelog sections:

  • changelog.txt (prioritized)
  • readme.txt
  • README.md
  • TODO.md

For other sections:

  • readme.txt
  • README.md
  • changelog.txt
  • TODO.md

Supported Formats

  • readme.txt: Traditional WordPress plugin readme format with == Section == headers
  • README.md: Markdown format with # Section or ## Section headers
  • changelog.txt: Changelog format with == Changelog == sections
  • TODO.md: Markdown format for TODO sections

How File Selection Works

The plugin uses smart file prioritization to automatically choose the most appropriate file for each section type:

  • TODO sections (show_todo="true") prioritize TODO.md for specialized TODO content
  • Changelog sections (show_changelog="true") prioritize changelog.txt for dedicated changelog files
  • Other sections (Description, Installation, Usage, Custom sections) prioritize readme.txt then README.md

The plugin searches through the prioritized list and uses the first file that contains the requested section. If the section is not found in the prioritized files, it will fall back to searching all other .md and .txt files in the plugin directory. This ensures specialized content gets priority over general documentation files while still allowing flexibility for custom documentation structures.