Clipboard Snippet Copier

Description

Clipboard Snippet Copier lets you share ready-to-use shortcodes, demo layouts, or any reusable code snippets with your visitors. Click a button and the snippet is copied straight to their clipboard. No manual selection, no copy/paste errors.

You decide whether the snippet stays hidden (fetched only when copied) or is displayed inline as a styled code block. Either mode is one click away for the visitor.

Why use it?

  • Sell or showcase shortcodes โ€” give buyers a “Copy Demo” button without exposing messy markup.
  • Document your code โ€” share PHP / JS / CSS examples on tutorial pages with a proper copy button.
  • Reduce support tickets โ€” eliminate “the shortcode didn’t work” issues caused by smart quotes, missing brackets, or whitespace mangling.
  • Track engagement โ€” built-in per-snippet copy counter shows what your audience actually uses.

Key features

  • ๐Ÿ“‹ One-click copy to clipboard with success/failure tooltip.
  • ๐Ÿ”’ Hidden mode โ€” the snippet is stored in the admin and fetched via AJAX only when copied (never rendered in the HTML).
  • ๐Ÿ‘๏ธ Inline mode โ€” render the snippet visibly as a <pre><code> block with a copy button on top.
  • ๐Ÿงฑ Gutenberg block with sidebar controls (snippet ID, label, inline toggle, language hint).
  • ๐Ÿ”ข Shortcode for the Classic Editor, WPBakery, Elementor and any other builder.
  • ๐Ÿงฎ Copy counter โ€” sortable “Copies” column on the admin list, so you can see what’s popular.
  • โš™๏ธ Settings page โ€” default label, default CSS class, tooltip text, guest-access toggle.
  • ๐Ÿ“ CodeMirror editor on the snippet edit screen โ€” keeps your indentation and angle brackets intact.
  • โšก Tiny footprint โ€” no jQuery dependency on the frontend, no external libraries.
  • ๐ŸŒ Translation-ready.

How it works

  1. You add a snippet in Code Snippets Add New and note its ID.
  2. You drop the Clipboard Snippet block (or the [clipsnco_code_copy_btn] shortcode) onto any page.
  3. When a visitor clicks the button, the snippet is fetched over AJAX and written to their clipboard โ€” without ever appearing in the page source (unless you turned on inline mode).

Usage

Quick start (shortcode)

[clipsnco_code_copy_btn id="123" label="Copy Code"]

Where 123 is the ID of your snippet (visible in the Code Snippets admin list).

Shortcode attributes

  • id (required, integer) โ€” the snippet ID.
  • label (optional, string) โ€” button text. Defaults to the value set on the Settings page.
  • class (optional, string) โ€” extra CSS classes added to the button.
  • inline (optional, “yes” / “no”) โ€” when yes, the snippet is rendered as a <pre><code> block with a copy button on top. Default no.
  • language (optional, string) โ€” e.g. php, js, css. Adds a language-xxx class on the <code> element so syntax-highlighter libraries (Prism.js, highlight.js) can colourise it.

Examples:

  • Hidden snippet, custom label: [clipsnco_code_copy_btn id="42" label="Copy shortcode"]
  • Inline display with PHP highlighting: [clipsnco_code_copy_btn id="42" inline="yes" language="php"]
  • Extra CSS class for theme styling: [clipsnco_code_copy_btn id="42" class="my-cta-btn"]

Gutenberg block

In the block editor, search for “Clipboard Snippet” and insert it. The sidebar lets you set:

  • Snippet ID โ€” the post ID of the snippet to copy.
  • Button label โ€” overrides the default label.
  • Show code inline โ€” toggle hidden vs inline display.
  • Language hint โ€” optional syntax-highlighter class.

The block is server-rendered, so you can switch between block and shortcode usage freely.

Alternative button markup

If your page builder won’t let you drop a <button> element, you can put any element on the page with the data attribute or the helper class โ€” the plugin’s frontend script picks it up automatically:

<a href="#" class="wcp-code-copy-btn" data-codecopy-id="123">Copy</a>

โ€ฆor, when even attributes aren’t allowed, use the class-only form:

<span class="wcp-code-copy-btn data-codecopy-id-123">Copy</span>

Settings

Code Snippets Settings lets you configure:

  • Default button label
  • Default CSS class applied to every button
  • Tooltip text shown on copy success / failure
  • Whether non-logged-in visitors are allowed to copy snippets

Copy counter

Every successful copy by a non-editor user bumps a _clipsnco_copy_count post meta value. The count is shown in the Copies column on the snippets admin list. Click the column header to sort by most-copied.

Styling

The button receives the class wcp-code-copy-btn plus anything you add via the shortcode/block class attribute. The inline-mode wrapper uses these classes (override them from your theme):

  • .clipsnco-inline-wrap โ€” outer container
  • .clipsnco-inline-toolbar โ€” top bar containing the copy button
  • .clipsnco-pre โ€” the <pre> element
  • .clipsnco-code โ€” the <code> element (also gets language-xxx when set)

Screenshots

  • The Code Snippets admin list with the ID, Shortcode and Copies columns.
  • Editing a snippet โ€” the CodeMirror editor keeps indentation and syntax intact.
  • The Settings page (default label, default class, tooltip text, guest-access toggle).
  • The Clipboard Snippet Gutenberg block with its sidebar controls.
  • A copy button on the frontend, with the success tooltip.
  • Inline mode rendering the snippet as a styled <pre><code> block.

Blocks

This plugin provides 1 block.

  • Clipboard Snippet

Installation

  1. Upload the plugin files to /wp-content/plugins/clipboard-snippet-copier, or install it directly from the WordPress.org repository.
  2. Activate the plugin through the Plugins screen.
  3. Go to Code Snippets Add New to create your first snippet.
  4. Insert the Clipboard Snippet block on any page, or paste the shortcode below.

FAQ

Can I use multiple buttons on the same page?

Yes. Drop as many blocks/shortcodes as you like โ€” each one copies its own snippet.

Will the snippet appear in the page source?

Only if you enable inline mode. In the default hidden mode the snippet lives in the WordPress admin and is fetched over AJAX the moment the button is clicked.

Does it work with page builders like WPBakery or Elementor?

Yes. Place the [clipsnco_code_copy_btn] shortcode in any text/HTML widget, content block or builder element.

Can I show the code on the page AND have a copy button?

Yes โ€” that’s inline mode. Set inline="yes" on the shortcode or flip the Show code inline toggle on the block.

Does this play nicely with syntax highlighters?

Yes. In inline mode, add the language attribute (language="php", language="js", โ€ฆ) and the plugin emits a matching language-xxx class on the <code> element. Prism.js, highlight.js and most other highlighters pick that up automatically.

Where can I see how many times a snippet has been copied?

Go to Code Snippets in the admin. The Copies column shows the running total; click the header to sort.

Can I prevent non-logged-in visitors from copying snippets?

Yes. Code Snippets Settings Allow guests controls this.

Does the plugin require jQuery?

No. The frontend script uses native fetch and the Clipboard API, with an execCommand fallback for older/insecure contexts.

Is the plugin translation-ready?

Yes โ€” text domain clipboard-snippet-copier, translations loaded from the /languages folder.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Clipboard Snippet Copier” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.4

  • New: Gutenberg block “Clipboard Snippet” with sidebar controls (id, label, inline toggle, language hint).
  • New: Inline mode โ€” render the snippet visibly as a <pre><code> block with a copy button on top (inline="yes").
  • New: Language hint attribute that emits a language-xxx class for syntax highlighters.
  • New: Settings page โ€” default label, default CSS class, tooltip text, guest-access toggle.
  • New: Copy counter per snippet, shown as a sortable admin column.
  • New: CodeMirror editor on the snippet edit screen for proper code formatting.
  • Improvement: Frontend script no longer depends on jQuery.
  • Improvement: Centralised CLIPSNCO_VERSION constant used across asset enqueues.
  • Improvement: Translations now properly loaded via load_plugin_textdomain().
  • Improvement: Escaped admin column output.
  • Improvement: AJAX response now includes a content key (legacy shortcode key preserved for backwards compatibility).
  • Fix: Removed stray console.log from the frontend script.

1.2

  • Fixed: Resource version not set in call to wp_enqueue_style().

1.1

  • Bug fixes.

1.0

  • Initial release of Clipboard Snippet Copier.