Simple Comment Editing

Users make typos! Allow users to correct their comments.

Sometimes a comment is made in the heat of the moment. Commenters have the option to delete their comment.

Core Features

Anonymous Comment Editing for Your Users

Easy to Use

Install. No configuration required. Users can edit their comments immediately.

User Friendly

Very intuitive interface and it’s easy to edit comments.

Save Time

Let users take control of editing their content. Concentrate on what you’re good at.

Delete Comments

Users can remove their own comments.

Extensible

The plugin can be heavily customized.

Robuts

We’ve spent years perfecting comment editing.

Theme Friendly

Works with most themes out of the box with no configuration.

Highly Rated

The plugin is highly rated and loved by users.

Testimonials

Developers

WordPress Filters

sce_loading_image

/** * Filter: sce_loading_img * * Replace the loading image with a custom version. * * @since 1.0.0 * * @param string $image_url URL path to the loading image. */ add_filter( 'sce_loading_img', 'edit_sce_loading_img' ); function edit_sce_loading_img( $default_url ) { return 'http://domain.com/new_loading_image.gif';

sce_comment_check_errors

/** * Filter: sce_comment_check_errors * * Return a custom error message based on the saved comment * * @since 1.2.4 * * @param bool $custom_error Default custom error. Overwrite with a string * @param array $comment_to_save Associative array of comment attributes */ add_filter( 'sce_comment_check_errors', 'custom_sce_check_comment_length', 15, 2 ); function custom_sce_check_comment_length( $return = false, $comment = array() ) { $comment_content = trim( wp_strip_all_tags( $comment[ 'comment_content' ] ) ); $comment_length = strlen( $comment_content ); if ( $comment_length < 50 ) { return 'Comment must be at least 50 characters'; } return false; }

sce_allow_delete

/** * Filter: sce_allow_delete * * Determine if users can delete their comments * * @since 1.1.0 * * @param bool $allow_delete True allows deletion, false does not */ // Disable delete functionality. add_filter( 'sce_allow_delete', '__return_false' );

sce_allow_delete_confirmation

/** * Filter: sce_allow_delete_confirmation * * Boolean to decide whether to show a delete confirmation * * @since 2.1.7 * * @param bool true to show a confirmation, false if not */ add_filter( 'sce_allow_delete_confirmation', '__return_false' );

sce_get_comment

/** * Filter: sce_get_comment * * Modify comment object * * @since 1.5.0 * * @param object Comment Object */

sce_extra_fields

/** * Filter: sce_extra_fields * * Filter to add additional form fields * * @since 1.4.0 * * @param string Empty string * @param int post_id POST ID * @param int comment_id Comment ID */

sce_buttons

/** * Filter: sce_buttons * * Filter to add button content * * @since 1.3.0 * * @param string $textarea_buttons Button HTML * @param int $comment_id Comment ID */

sce_content

/** * Filter: sce_content * * Filter to overral sce output * * @since 1.3.0 * * @param string $sce_content SCE content * @param int $comment_id Comment ID of the comment */

sce_save_before

/** * Filter: sce_save_before * * Allow third parties to modify comment * * @since 1.4.0 * * @param object $comment_to_save The Comment Object * @param int $post_id The Post ID * @param int $comment_id The Comment ID */

sce_can_edit

/** * Filter: sce_can_edit * * Determine if a user can edit the comment * * @since 1.3.2 * * @param bool true If user can edit the comment * @param object $comment Comment object user has left * @param int $comment_id Comment ID of the comment * @param int $post_id Post ID of the comment */ Example Gist: https://gist.github.com/ronalfy/6b4fec8b3ac55bc47f3f

sce_load_scripts

/** * Filter: sce_load_scripts * * Boolean to decide whether to load SCE scripts or not * * @since 1.5.0 * * @param bool true to load scripts, false not (default true) */

sce_comment_time

/** * Filter: sce_comment_time * * How long in minutes to edit a comment * * @since 1.0.0 * * @param int $minutes Time in minutes */ add_filter( 'sce_comment_time', 'edit_sce_comment_time' ); function edit_sce_comment_time( $time_in_minutes ) { return 60; }

sce_show_timer

/** * Filter: sce_show_timer * * Filter allow you to hide the timer * * @since 2.3.0 * * @param bool Whether to show the timer or not */ // Simple Comment Editing - Disable the timer. add_filter( 'sce_show_timer', '__return_false' );

sce_edit_text

/** * Filter: sce_text_edit * * Filter allow editing of edit text * * @since 2.0.0 * * @param string Translated click to edit text */ add_filter( 'sce_text_edit', function( $translated_text ) { return "Custom Edit Text"; } );

sce_edit_save

/** * Filter: sce_text_save * * Filter allow editing of save text * * @since 2.0.0 * * @param string Translated save text */ add_filter( 'sce_text_save', function( $translated_text ) { return "Custom Save"; } );

sce_edit_cancel

/** * Filter: sce_text_cancel * * Filter allow editing of cancel text * * @since 2.0.0 * * @param string Translated cancel text */ add_filter( 'sce_text_cancel', function( $translated_text ) { return "Custom Cancel"; } );

sce_edit_delete

/** * Filter: sce_text_delete * * Filter allow editing of delete text * * @since 2.0.0 * * @param string Translated delete text */ add_filter( 'sce_text_delete', function( $translated_text ) { return "Custom Delete"; } );

WordPress Actions

sce_save_after

/** * Action: sce_save_after * * Allow third parties to save content after a comment has been updated * * @since 1.4.0 * * @param object $comment_to_save The Comment Object * @param int $post_id The Post ID * @param int $comment_id The Comment ID */

JavaScript Hooks

sce.comment.save.data

/** * JSFilter: sce.comment.save.data * * Event triggered before a comment is saved * * @since 1.4.0 * * @param object $ajax_save_params */

sce.comment.timer.text

/** * JSFilter: sce.comment.timer.text * * Filter triggered before a timer is returned * * @since 1.4.0 * * @param string Timer text * @param string Minutes text (internationalized) * @param string Seconds text (internationalized) * @param int minutes * @param int seconds */

JavaScript Events

sce.comment.save.pre

/** * Event: sce.comment.save.pre * * Event triggered before a comment is saved * * @since 1.4.0 * * @param int $comment_id The Comment ID * @param int $post_id The Post ID */

sce.comment.save

/** * Event: sce.comment.save * * Event triggered after a comment is saved * * @since 1.4.0 * * @param int $comment_id The Comment ID * @param int $post_id The Post ID */

sce.timer.loaded

/** * Event: sce.timer.loaded * * Event triggered after a comment's timer has been loaded * * @since 1.3.0 * * @param jQuery Element of the comment */

sce.comment.loaded

/** * Event: sce.comment.loaded * * Event triggered after SCE has loaded a comment. * * @since 1.5.0 * * @param object Comment Object */

Styling

The plugin doesn’t come with any styles. We leave it up to you to style the interface. It doesn’t look horribly ugly on most themes, but we leave the advanced customization up to you.

Styling the Edit Interface

The overall editing interface has been wrapped in a div with class sce-edit-comment.

.sce-edit-comment { /* styles here */ }

Styling the Edit Button

The edit button and timer have been wrapped in a div with class sce-edit-button.

.sce-edit-button { /* styles here */ } .sce-edit-button a { /* styles here */ } .sce-edit-button .sce-timer { /* styles here */ }

Styling the Loading Icon

The loading icon has been wrapped in a div with class sce-loading.

.sce-loading { /* styles here */ } .sce-loading img { /* styles here */ }

Styling the Textarea

The textarea interface has been wrapped in a div with class sce-textarea.

The actual textarea has been wrapped in a div with class sce-comment-textarea. The save/cancel buttons have been wrapped in a div with class sce-comment-edit-buttons.

.sce-textarea { /* styles here */ } .sce-textarea .sce-comment-textarea textarea { /* styles here */ } .sce-comment-edit-buttons { /* styles here */ } .sce-comment-edit-buttons .sce-comment-save { /* styles here */ } .sce-comment-edit-buttons .sce-comment-cancel { /* styles here */ }

Testing the Styles

Since most of the interface is hidden, it’s a little hard to style. Just place this into your stylesheet, and remove when you’re done.

/* todo - remove me when done styling */ .sce-edit-button, .sce-loading, .sce-textarea { display: block !important; }