{CODICTS} Snippets is now available

Voxel Edit Pro

The {CODICTS} Voxel Edit Pro plugin brings frontend bulk editing, inline editing, quick add, and bulk delete capabilities to sites powered by the Voxel Theme. It integrates with both Voxel’s post type system and Elementor, allowing administrators and authorized users to manage Voxel posts directly from the frontend without visiting the WordPress admin dashboard.

Requirements

Important: The plugin checks for both Voxel Child Theme and Elementor on every page load. If either dependency is missing, the plugin will display an admin notice and will not load any of its features.

Installation & Activation

Start by downloading the plugin from the Downloads page on your dashboard on the CoDicts website.

After downloading, install and activate the plugin in WordPress by navigating to “Plugins” > “Add New” > “Upload Plugin” and selecting the downloaded zip file. Click “Install Now” and then “Activate”.

Once activated, you will find three new widgets under the {CODICTS} category in the Elementor editor:

WidgetDescription
{C} Bulk Edit Pro – Bulk Edit ButtonRenders Select All / Edit All / Delete All buttons for bulk operations.
{C} Bulk Edit Pro – CheckboxRenders a checkbox bound to a post ID for selection.
{C} Bulk Edit Pro – Quick Add / EditA button or inline form for single-post editing or new post creation.

Core Concepts

Selector ID Linking

Checkboxes and bulk edit buttons are linked together via a Selector ID — a simple string identifier. A Checkbox widget with Selector ID 1 will be controlled by a Bulk Edit Button widget with the same Selector ID 1. You can have multiple independent bulk-edit groups on the same page by using different Selector IDs.

How It Works Under the Hood

The plugin uses Voxel’s own create-post infrastructure to render edit forms on the frontend. It reads your Voxel post type field definitions, generates a Voxel-compatible form, and uses Voxel’s own field sanitization, validation, and update APIs. This ensures full compatibility with all Voxel field types — text, taxonomy, location, repeater, product, file, image, switcher, and more.

Unsupported Field Types

The following Voxel field types are purely presentational and cannot be edited: ui-step, ui-image, ui-heading, and ui-html.


Setting Up Bulk Editing

Bulk editing lets users select multiple posts via checkboxes and edit shared fields simultaneously. Here is how to set it up:

Step 1: Add Checkboxes to Your Post Feed Card

Open the Elementor template used for your Voxel post feed card. Drag in the {C} Bulk Edit Pro – Checkbox widget and place it where you want the checkbox to appear on each post card.

Set the Post ID field using Elementor’s dynamic tags — select the current post’s ID. Set a Selector ID (e.g., 1).

Step 2: Add the Bulk Edit Button

On the page that contains your post feed, drag in the {C} Bulk Edit Pro – Bulk Edit Button widget above or alongside your feed.

Set the Selector ID to match the checkboxes (e.g., 1). Select the Post Type you want to edit.

Step 3: Configure Editable Fields

In the Bulk Edit Button widget settings, you will see a repeater section for each post type. Click “Add Field” to choose which post type fields should be editable. For each field, you can optionally:

OptionDescription
Hide labelHides the field’s label in the edit modal.
Hide OptionalHides the “Optional” indicator text.
Don’t load field valuePrevents pre-loading the existing value. Useful for “set all to this value” operations.

Step 4: Use It

On the frontend, users can now click checkboxes to select posts. Once at least one checkbox is selected, the “Edit All” button appears (and optionally “Delete All”). Clicking “Edit All” opens a modal with the configured fields. After editing, click “Save” to apply changes to all selected posts at once.

Tip: You can also click “Select All” to toggle all visible checkboxes on or off. If you enable “Select All Based on Filters”, the button will select all posts matching your current search filters — not just the ones visible on the page.


Bulk Edit Button Settings

General Settings

SettingDescription
Choose Post TypesSelect the Voxel post type to edit.
Selector IDLinks this button group to matching checkboxes (default: 1).
Reload Page After SaveIf enabled, reloads the page after a successful save. If disabled, the post feed refreshes dynamically.
Reload Countdown (ms)Delay before page reload (default: 500).

Select/Unselect Button

SettingDescription
Hide Select All ButtonHides the Select/Unselect All button entirely.
Select All Based on FiltersWhen enabled, “Select All” uses the connected search form’s filters to select all matching post IDs server-side.
Max Selected EditsMaximum number of posts that can be selected at once (default: 500).
Select Text / Unselect TextCustomizable button labels for each state.

Edit Button

SettingDescription
Display Total Edit CountShows the count of selected items, e.g., “Edit All (5)”.
TextButton label (default: “Edit All”).

Delete Button

SettingDescription
Enable Delete ButtonEnables/disables the delete button entirely.
Display Total Delete CountShows selected count on the delete button.
TextButton label (default: “Delete All”).

Checkbox Widget Settings

SettingDescription
Post IDThe post this checkbox represents. Set dynamically via Elementor dynamic tags inside a Voxel post feed template.
Selector IDMust match the Selector ID on the corresponding Bulk Edit Button widget.
Preselect CheckboxIf enabled, the checkbox is automatically checked on page load.
Hide CheckboxIf enabled, the checkbox is hidden (useful for programmatic selection).

The checkbox also has full style controls for border size, border color, background color (checked and unchecked), checkmark color, checkmark size, checkbox size, and border radius.


Single / Inline Editing & Quick Add

The {C} Bulk Edit Pro – Quick Add / Edit widget is the most versatile widget. It supports three display modes:

ModeDescription
PopupRenders a button. Clicking it opens a modal dialog with the edit form.
InlineRenders the edit form directly on the page — no button or modal.
Adaptive Inline (Experimental)Injects an inline “quick add” card directly into a connected Voxel post feed grid.

Setting Up Popup Editing

Step 1: Drag the {C} Bulk Edit Pro – Quick Add / Edit widget into your page or post feed card template.

Step 2: Set the Post ID using Elementor’s dynamic tags (for editing an existing post) or leave it empty (for creating a new post).

Step 3: Select the Post Type and add the fields you want to be editable using the field repeater.

Step 4: Set Display Type to “Popup”. Customize the button text, size, and icon.

On the frontend, clicking the button opens a modal with a Voxel form. After editing, click “Save” to submit changes.

Setting Up Inline Editing

Step 1: Follow the same setup, but set Display Type to “Inline”.

Step 2: The form will render directly on the page. A “Save” button appears on hover.

Tip: Enable “Auto Save” (experimental) to automatically save changes as the user edits — no save button needed. Changes are debounced with a 1-second delay so rapid edits are batched together.

Quick Add (Creating New Posts)

To create new posts from the frontend, simply leave the Post ID field empty. The form will render without preloaded values, and saving will create a new post of the selected type. The post status will follow your Voxel post type’s submission settings — either publish or pending.


Adaptive Inline Mode (Experimental)

This feature integrates a “quick add” form directly into a Voxel post feed grid as a card.

Step 1: Configure the Widget

Set the Quick Add / Edit widget to Display Type: Inline and enable “Adaptive Inline”.

Step 2: Connect to a Post Feed

Use the “Connect to Post Feed” setting to link the widget to a specific Voxel post feed widget on the page.

Step 3: Choose Position

Set the “Adaptive Inline Position” to “First” or “Last” — this controls whether the add card appears at the beginning or end of the feed grid.

Step 4: Customize the Card

By default, the card appears as a dashed-border placeholder with a “+” icon. You can optionally enable “Use custom preview card” and select a Voxel card template for a more polished look.

Clicking the placeholder opens an inline form. After saving, the form resets and the post feed refreshes automatically.


Guest Edit / Assigned User Editing

This feature allows non-logged-in users to submit edits or create posts that are credited to a specific user account. This is useful for public-facing forms where visitors can submit data.

Step 1: Enable Guest Editing

On the Quick Add / Edit widget, enable “Assign User ID for Edits”.

Step 2: Set the User ID

Enter the User ID that should own the edits. This must be a valid WordPress user.

When guest editing is enabled, both the save and form-loading endpoints accept non-authenticated requests. The specified User ID is validated on every request — if the user does not exist, the request is rejected.

Important: The assigned user must still have the appropriate permissions to edit or create posts of the selected type. The plugin checks permissions using the assigned user’s capabilities.


Batch Processing

For large bulk operations, the plugin can process updates in scheduled background batches to avoid PHP timeout issues.

By default, batch processing is disabled (all posts are processed in a single request). To enable it, add the following filter to your theme’s functions.php or a code snippet:

add_filter('codicts-voxel-edit-pro::batch-limit', function($limit) {
    return 500; // Process 500 posts per batch
}, 10, 1);

When the number of selected posts exceeds the batch limit, the first batch is processed immediately and the remaining batches are scheduled via WordPress cron, running 1 second apart.


Post Feed Refresh

After a successful edit, the plugin can refresh the Voxel post feed dynamically without a full page reload.

This happens automatically when “Reload Page After Save” is disabled. The plugin finds the connected post feed, re-runs the current search query, and replaces the feed content — including pagination controls.

If you prefer a full page reload instead, enable “Reload Page After Save” and set the “Reload Countdown” delay in milliseconds.


Auto Save (Experimental)

When enabled on an inline form, the auto-save system automatically monitors the form and submits changes without the user needing to click “Save”.

The system checks for changes every second. When a change is detected, it waits an additional 1 second (debounce) before saving — so rapid edits are batched together. The manual “Save” button is hidden when auto-save is active.

If a save is in progress, the browser will warn the user before navigating away to prevent data loss.


Hooks, Filters & Custom Events

The plugin provides hooks for developers to extend its functionality:

PHP Action — After Save

Fires after each successful post save. Contains the post ID, post type, status, event type (create or update), and the fields that were saved.

add_action('codicts-voxel-edit-pro::event', function($params) {
    // $params contains: post_id, post_type, post_status, event, fields
    error_log(print_r($params, true));
}, 10, 1);

PHP Filter — Batch Limit

Controls how many posts are processed per batch during bulk operations.

add_filter('codicts-voxel-edit-pro::batch-limit', function($limit) {
    return 500;
}, 10, 1);

JavaScript Event — After AJAX Save

Fires in the browser after a successful AJAX save. Contains post IDs, post type, container element, and field data.

$(document).on('codicts-voxel-edit-pro::ajax_event', function(event, params) {
    console.log(params);
});

Troubleshooting

“Voxel Theme Not Detected” Error

Ensure the Voxel theme is installed and set as the active theme (not a child theme with a different template value). The plugin checks get_option('template') == 'voxel'.

“Elementor Not Detected” Error

Install and activate Elementor. The free version is sufficient.

“Please Disable VOXEL_DEV_MODE” Error

When VOXEL_DEV_MODE is active, Voxel’s internal component references may not work as expected. Disable it in your wp-config.php or Voxel settings for production use.

Bulk Edit Not Saving

Verify the user has edit_others_posts capability or is the post author. Check that the post type’s submission settings allow updates. If the page has been open for a long time, clear the browser cache to refresh the security nonce.

Fields Not Showing in the Edit Form

Make sure the field is added to the widget’s field repeater in Elementor. Check that the field passes visibility rules (role or plan restrictions). UI-only field types (ui-step, ui-image, ui-heading, ui-html) are excluded automatically.

Post Feed Not Refreshing After Edit

Make sure “Reload Page After Save” is disabled — otherwise a full reload occurs instead of a dynamic refresh. The post feed widget must be findable by the plugin. For filter-connected feeds, ensure the search form widget is properly linked to the post feed.

Auto Save Not Triggering

Confirm the “Auto Save” toggle is enabled on the widget. Auto save only works on inline forms (not popup mode). The debounce delay is 1 second — rapid changes are batched. Check the browser console for any AJAX errors.


For further support, visit codicts.com or contact us at support@codicts.com.

CoDicts Co., Ltd. © 2021-2026. All rights reserved