Add Notes to Plugins in the WordPress Dashboard

If you care about website performance and easier administration, I recommend using a code snippet plugin like WPCodeBox (or similar) for adding code to your website.

Instructions

  1. Create a new PHP code snippet.
  2. Copy the contents of code snippet below.
  3. Paste the contents into your code snippet.
  4. Review any notes that I’ve provided.
  5. Save and enable the code snippet.
  6. Test.

Snippet

This code snippet adds a ‘Notes’ column to the Plugins table within the WordPress Dashboard. The column can be turned ON/OFF under ‘Screen Options’ within WordPress.

  • Remind yourself as to why the plugin was installed.
  • Take notes for recent issues encountered with the plugin.
  • Vendor support can leave notes for website admins.
  • And more!
<?php

class Admin_Plugins_Notes {
    /**
     * Admin_Plugins_Notes constructor.
     */
    public function __construct() {
        add_filter('manage_plugins_columns', array($this, 'add_notes_column'));
        add_action('manage_plugins_custom_column', array($this, 'display_notes_column'), 10, 3);
        add_action('admin_footer', array($this, 'add_js_to_plugins_page'));
        add_action('wp_ajax_save_plugin_note', array($this, 'save_plugin_note'));
    }

    /**
     * Add "Notes" column to plugins table.
     *
     * @param $columns
     * @return mixed
     */
    public function add_notes_column($columns) {
        $columns['notes'] = __('Notes', 'wptu');
        return $columns;
    }

    /**
     * Display the notes column.
     *
     * @param $column_name
     * @param $plugin_file
     * @param $plugin_data
     */
    public function display_notes_column($column_name, $plugin_file, $plugin_data) {
        if ($column_name == 'notes') {
            $notes = get_option('plugin_notes_' . $plugin_file, '');
            if (current_user_can('activate_plugins')) {
                echo '<textarea class="plugin_notes" data-plugin="'.$plugin_file.'">' . esc_textarea($notes) . '</textarea>';
            } else {
                echo '<textarea class="plugin_notes" data-plugin="'.$plugin_file.'" readonly>' . esc_textarea($notes) . '</textarea>';
            }
        }
    }

    /**
     * Add JavaScript to plugins page.
     */
    public function add_js_to_plugins_page() {
        if (get_current_screen()->base !== 'plugins') {
            return;
        }
        ?>
        <script type="text/javascript">
            jQuery(function($) {
                $('.plugin_notes').on('blur', function() {
                    var plugin = $(this).data('plugin');
                    var note = $(this).val();
                    $.post(ajaxurl, {
    action: 'save_plugin_note',
    plugin: plugin,
    note: note,
    security: '<?php echo wp_create_nonce('save_plugin_note'); ?>'
});
                });
            });
        </script>
        <?php
    }

    /**
     * Save plugin note.
     */
    public function save_plugin_note() {
        check_ajax_referer('save_plugin_note', 'security');
        $plugin = sanitize_text_field($_POST['plugin']);
        $note = sanitize_textarea_field($_POST['note']);
        update_option('plugin_notes_' . $plugin, $note);
        wp_die();
    }
}

new Admin_Plugins_Notes();
🔥NEW!🔥
Property Starter Site
MyListing Add-on
Launch Sale Ends: June 24th.

Club Guarantee

If you notice an issue with this product, I’ll fix it for free and get you an updated version.

Club Guarantee

If you notice an issue with a Club Product and the problem exists on the corresponding Starter Site, I’ll fix it for free.