This post will show you how to identify which WordPress plugin options in the wp_options table belong to a specific plugin. Normally developers will search in the wp_options table manually with phpMyAdmin or Adminer (WordPress plugin version) but this can often be very tedious as you have to paginate though sometimes hundreds of pages! When we have Linux command line tools available via SSH like WP-CLI and grep, we can efficiently identify which options in the WordPress database belong to a specific plugin and save precious time!
In this post I will show the techniques I normally use for finding these options so that I can correct any settings, back them up etc by matching the WordPress option_name to the plugin.
Please note that both of these approaches will require a terminal and SSH access of some kind to your WordPress installation.
I will assume WP-CLI and grep are already installed on the Linux system. Both Kinsta and Cloudways provide SSH access which have WP-CLI and grep available.
Find out which WordPress Plugin option_name Database Values
The first 2 techniques use my favorite tool: WP-CLI, after that there is a method using the Linux tool grep.
WP-CLI
I had a client on Codeable that had about 3 different social sharing plugins! I wanted to write a script using WP-CLI to batch delete all of these WordPress plugin values in the database that were no longer necessary. In this tutorial I will be trying to identify the addthis option_names in the wp_options table in the WordPress database.
In this section we will use WP-CLI 🙂
Using WP-CLI option Command
Using the option list command coupled with restricting the --field to option_names only, we can then use grep to only show us the option_names that contain the addthis string.
wp option list --field=option_name --allow-root | grep addthisHere is the output showing all of the option_name values with the string addthis
addthis_settings
widget_addthis-widget
addthis_shared_settings
addthis_sharing_buttons_settingsIf you want to see all of the option_values for each option_name containing addthis, you can use this command which will loop through each of them
wp option list --field=option_name --allow-root | grep addthis | xargs --replace=% wp option get % --allow-rootNote that thesea re serialized arrays
array (
'addthis_social_widget_migrated_to' => 'addthis_sharing_buttons_settings',
)
array (
1 =>
array (
),
'_multiwidget' => 1,
)
array (
'addthis_anonymous_profile' => 'wp-c419021f34068dcd14db1185f724f76c',
'addthis_asynchronous_loading' => true,
'addthis_environment' => '',
'addthis_per_post_enabled' => true,
'addthis_plugin_controls' => 'AddThis',
'addthis_profile' => 'ra-53ce33e04caa78a0',
'addthis_rate_us' => '',
'addthis_rate_us_timestamp' => 1500897630,
'credential_validation_status' => '1',
'wpfooter' => true,
'addthis_twitter_template' => 'biznewsCOM',
'addthis_bitly' => true,
'addthis_share_json' => '',
'addthis_layers_json' => '',
'data_ga_property' => '',
'addthis_language' => '',
'atversion' => 300,
'addthis_append_data' => true,
'addthis_addressbar' => false,
'addthis_508' => false,
'addthis_config_json' => '',
)
array (
'above' => 'disable',
'below' => 'disable',
'addthis_showonexcerpts' => false,
'addthis_aftertitle' => false,
'addthis_beforecomments' => false,
'atversion_update_status' => '0',
'above_chosen_list' => '',
'below_chosen_list' => '',
'addthis_wordpress_version' => '4.0',
'addthis_plugin_version' => '5.3.4',
'addthis_above_showon_home' => true,
'addthis_below_showon_home' => true,
'addthis_above_showon_pages' => true,
'addthis_below_showon_pages' => true,
'addthis_above_showon_categories' => true,
'addthis_below_showon_categories' => true,
'addthis_above_showon_archives' => true,
'addthis_below_showon_archives' => true,
'addthis_above_enabled' => false,
'addthis_below_enabled' => false,
'above_auto_services' => true,
'above_custom_more' => '',
'above_custom_preferred' => '',
'above_custom_services' => '',
'above_custom_size' => '',
'above_custom_string' => '',
'addthis_sidebar_count' => '5',
'addthis_sidebar_enabled' => false,
'addthis_sidebar_position' => 'left',
'addthis_mobile_toolbar_enabled' => false,
'addthis_mobile_toolbar_numPreferredServices' => '4',
'addthis_mobile_toolbar_position' => 'bottom',
'addthis_mobile_toolbar_counts' => true,
'below_auto_services' => true,
'below_custom_more' => '',
'below_custom_preferred' => '',
'below_custom_services' => '',
'below_custom_size' => '',
'below_custom_string' => '',
'location' => 'below',
'style' => 'fb_tw_p1_sc',
'toolbox' => '',
'addthis_above_showon_posts' => true,
'addthis_above_showon_excerpts' => true,
'addthis_below_showon_posts' => true,
'addthis_below_showon_excerpts' => true,
'addthis_sidebar_showon_home' => true,
'addthis_sidebar_showon_posts' => true,
'addthis_sidebar_showon_pages' => true,
'addthis_sidebar_showon_archives' => true,
'addthis_sidebar_showon_categories' => true,
'addthis_mobile_toolbar_showon_home' => true,
'addthis_mobile_toolbar_showon_posts' => true,
'addthis_mobile_toolbar_showon_pages' => true,
'addthis_mobile_toolbar_showon_archives' => true,
'addthis_mobile_toolbar_showon_categories' => true,
)
If they are serialized arrays this will put them in the json format by employing the --format flag.
wp option list --field=option_name --allow-root | grep addthis | xargs --replace=% wp option get % --format=json --allow-rootNotice the output is now in json format
{"addthis_social_widget_migrated_to":"addthis_sharing_buttons_settings"}
{"1":[],"_multiwidget":1}
{"addthis_anonymous_profile":"wp-c419021f34068dcd14db1185f724f76c","addthis_asynchronous_loading":true,"addthis_environment":"","addthis_per_post_enabled":true,"addthis_plugin_controls":"AddThis","addthis_profile":"ra-53ce33e04caa78a0","addthis_rate_us":"","addthis_rate_us_timestamp":1500897630,"credential_validation_status":"1","wpfooter":true,"addthis_twitter_template":"biznewsCOM","addthis_bitly":true,"addthis_share_json":"","addthis_layers_json":"","data_ga_property":"","addthis_language":"","atversion":300,"addthis_append_data":true,"addthis_addressbar":false,"addthis_508":false,"addthis_config_json":""}
{"above":"disable","below":"disable","addthis_showonexcerpts":false,"addthis_aftertitle":false,"addthis_beforecomments":false,"atversion_update_status":"0","above_chosen_list":"","below_chosen_list":"","addthis_wordpress_version":"4.0","addthis_plugin_version":"5.3.4","addthis_above_showon_home":true,"addthis_below_showon_home":true,"addthis_above_showon_pages":true,"addthis_below_showon_pages":true,"addthis_above_showon_categories":true,"addthis_below_showon_categories":true,"addthis_above_showon_archives":true,"addthis_below_showon_archives":true,"addthis_above_enabled":false,"addthis_below_enabled":false,"above_auto_services":true,"above_custom_more":"","above_custom_preferred":"","above_custom_services":"","above_custom_size":"","above_custom_string":"","addthis_sidebar_count":"5","addthis_sidebar_enabled":false,"addthis_sidebar_position":"left","addthis_mobile_toolbar_enabled":false,"addthis_mobile_toolbar_numPreferredServices":"4","addthis_mobile_toolbar_position":"bottom","addthis_mobile_toolbar_counts":true,"below_auto_services":true,"below_custom_more":"","below_custom_preferred":"","below_custom_services":"","below_custom_size":"","below_custom_string":"","location":"below","style":"fb_tw_p1_sc","toolbox":"","addthis_above_showon_posts":true,"addthis_above_showon_excerpts":true,"addthis_below_showon_posts":true,"addthis_below_showon_excerpts":true,"addthis_sidebar_showon_home":true,"addthis_sidebar_showon_posts":true,"addthis_sidebar_showon_pages":true,"addthis_sidebar_showon_archives":true,"addthis_sidebar_showon_categories":true,"addthis_mobile_toolbar_showon_home":true,"addthis_mobile_toolbar_showon_posts":true,"addthis_mobile_toolbar_showon_pages":true,"addthis_mobile_toolbar_showon_archives":true,"addthis_mobile_toolbar_showon_categories":true}
If they are serialized you can save them all to separate files for inspection with this mini bash script loop
WPPATH=""
WPFLAGS="--path=${WPPATH} --skip-plugins --skip-themes --allow-root"
# path to store option values without trailing slash
OPTIONPATH=/tmp
OPTIONNAME="addthis"
OPTIONLIST=($(wp option list --field=option_name ${WPFLAGS} | grep ${OPTIONNAME}))
for OPTION in ${OPTIONLIST[@]};
do
wp option get ${OPTION} --format=json ${WPFLAGS} > ${OPTIONPATH}/${OPTION}.txt
doneYou will have a separate file for each option_name in the /tmp folder to peruse afterwards.
If you do not want them in json format then this should do the trick
WPPATH=""
WPFLAGS="--path=${WPPATH} --skip-plugins --skip-themes --allow-root"
# path to store option values without trailing slash
OPTIONPATH=/tmp
OPTIONNAME="addthis"
OPTIONLIST=($(wp option list --field=option_name ${WPFLAGS} | grep ${OPTIONNAME}))
for OPTION in ${OPTIONLIST[@]};
do
wp option get ${OPTION} ${WPFLAGS} > ${OPTIONPATH}/${OPTION}.txt
doneIf it is an option_value rather than an option_name you are looking for in the WordPress plugin, try this and replace addthis with the value you are searching for
wp option list --field=option_value --allow-root | grep addthisherp
a:1:{s:33:"addthis_social_widget_migrated_to";s:32:"addthis_sharing_buttons_settings";}
a:21:{s:25:"addthis_anonymous_profile";s:35:"wp-c419021f34068dcd14db1185f724f76c";s:28:"addthis_asynchronous_loading";b:1;s:19:"addthis_environment";s:0:"";s:24:"addthis_per_post_enabled";b:1;s:23:"addthis_plugin_controls";s:7:"AddThis";s:15:"addthis_profile";s:19:"ra-53ce33e04caa78a0";s:15:"addthis_rate_us";s:0:"";s:25:"addthis_rate_us_timestamp";i:1500897630;s:28:"credential_validation_status";s:1:"1";s:8:"wpfooter";b:1;s:24:"addthis_twitter_template";s:10:"biznewsCOM";s:13:"addthis_bitly";b:1;s:18:"addthis_share_json";s:0:"";s:19:"addthis_layers_json";s:0:"";s:16:"data_ga_property";s:0:"";s:16:"addthis_language";s:0:"";s:9:"atversion";i:300;s:19:"addthis_append_data";b:1;s:18:"addthis_addressbar";b:0;s:11:"addthis_508";b:0;s:19:"addthis_config_json";s:0:"";}
a:56:{s:5:"above";s:7:"disable";s:5:"below";s:7:"disable";s:22:"addthis_showonexcerpts";b:0;s:18:"addthis_aftertitle";b:0;s:22:"addthis_beforecomments";b:0;s:23:"atversion_update_status";s:1:"0";s:17:"above_chosen_list";s:0:"";s:17:"below_chosen_list";s:0:"";s:25:"addthis_wordpress_version";s:3:"4.0";s:22:"addthis_plugin_version";s:5:"5.3.4";s:25:"addthis_above_showon_home";b:1;s:25:"addthis_below_showon_home";b:1;s:26:"addthis_above_showon_pages";b:1;s:26:"addthis_below_showon_pages";b:1;s:31:"addthis_above_showon_categories";b:1;s:31:"addthis_below_showon_categories";b:1;s:29:"addthis_above_showon_archives";b:1;s:29:"addthis_below_showon_archives";b:1;s:21:"addthis_above_enabled";b:0;s:21:"addthis_below_enabled";b:0;s:19:"above_auto_services";b:1;s:17:"above_custom_more";s:0:"";s:22:"above_custom_preferred";s:0:"";s:21:"above_custom_services";s:0:"";s:17:"above_custom_size";s:0:"";s:19:"above_custom_string";s:0:"";s:21:"addthis_sidebar_count";s:1:"5";s:23:"addthis_sidebar_enabled";b:0;s:24:"addthis_sidebar_position";s:4:"left";s:30:"addthis_mobile_toolbar_enabled";b:0;s:43:"addthis_mobile_toolbar_numPreferredServices";s:1:"4";s:31:"addthis_mobile_toolbar_position";s:6:"bottom";s:29:"addthis_mobile_toolbar_counts";b:1;s:19:"below_auto_services";b:1;s:17:"below_custom_more";s:0:"";s:22:"below_custom_preferred";s:0:"";s:21:"below_custom_services";s:0:"";s:17:"below_custom_size";s:0:"";s:19:"below_custom_string";s:0:"";s:8:"location";s:5:"below";s:5:"style";s:11:"fb_tw_p1_sc";s:7:"toolbox";s:0:"";s:26:"addthis_above_showon_posts";b:1;s:29:"addthis_above_showon_excerpts";b:1;s:26:"addthis_below_showon_posts";b:1;s:29:"addthis_below_showon_excerpts";b:1;s:27:"addthis_sidebar_showon_home";b:1;s:28:"addthis_sidebar_showon_posts";b:1;s:28:"addthis_sidebar_showon_pages";b:1;s:31:"addthis_sidebar_showon_archives";b:1;s:33:"addthis_sidebar_showon_categories";b:1;s:34:"addthis_mobile_toolbar_showon_home";b:1;s:35:"addthis_mobile_toolbar_showon_posts";b:1;s:35:"addthis_mobile_toolbar_showon_pages";b:1;s:38:"addthis_mobile_toolbar_showon_archives";b:1;s:40:"addthis_mobile_toolbar_showon_categories";b:1;}
Searching the Database with WP-CLI
This command will search the wp_options table only in both the option_name and option_value columns.
We are using the helpful wp db prefix command as well.
wp db search "addthis" $(wp db prefix --allow-root)options --allow-rootHere is the output
aue_options:option_name
251966:addthis_settings
aue_options:option_name
2868184:addthis_shared_settings
aue_options:option_name
2868185:addthis_sharing_buttons_settings
aue_options:option_name
257106:widget_addthis-widget
aue_options:option_value
251966:a:1:{s:33:"addthis_social_widget_migrated_to";s:32:"addthis_sharing_buttons_settings";}
aue_options:option_value
392010:link-to-facebook.php";s:5:"1.212";s:33:"addthis/addthis_social_widget.php";s:3:"4.0";s:43:"brok [...] /add-link-to-facebook.1.212.zip";}s:33:"addthis/addthis_social_widget.php";O:8:"stdClass":7:{s: [...] :7:{s:2:"id";s:4:"5710";s:4:"slug";s:7:"addthis";s:6:"plugin";s:33:"addthis/addthis_social_widget.php";s:11:"new_version";s [...] rl";s:38:"https://wordpress.org/plugins/addthis/";s:7:"package";s:57:"https://downloads [...] "https://downloads.wordpress.org/plugin/addthis.3.5.10.zip";}s:43:"broken-link-checker/
aue_options:option_value
2868184:a:21:{s:25:"addthis_anonymous_profile";s:35:"wp-c419021f340 [...] c419021f34068dcd14db1185f724f76c";s:28:"addthis_asynchronous_loading";b:1;s:19:"addthis_environment";s:0:"";s:24:"addthis_per_post_enabled";b:1;s:23:"addthis_plugin_controls";s:7:"AddThis";s:15:"addthis_profile";s:19:"ra-53ce33e04caa78a0";s:1 [...] ofile";s:19:"ra-53ce33e04caa78a0";s:15:"addthis_rate_us";s:0:"";s:25:"addthis_rate_us_timestamp";i:1500897630;s:28:"c [...] tatus";s:1:"1";s:8:"wpfooter";b:1;s:24:"addthis_twitter_template";s:10:"biznewsCOM";s:1 [...] itter_template";s:10:"biznewsCOM";s:13:"addthis_bitly";b:1;s:18:"addthis_share_json";s:0:"";s:19:"addthis_layers_json";s:0:"";s:16:"data_ga_prope [...] "";s:16:"data_ga_property";s:0:"";s:16:"addthis_language";s:0:"";s:9:"atversion";i:300; [...] age";s:0:"";s:9:"atversion";i:300;s:19:"addthis_append_data";b:1;s:18:"addthis_addressbar";b:0;s:11:"addthis_508";b:0;s:19:"addthis_config_json";s:0:"";}
aue_options:option_value
2868185:isable";s:5:"below";s:7:"disable";s:22:"addthis_showonexcerpts";b:0;s:18:"addthis_aftertitle";b:0;s:22:"addthis_beforecomments";b:0;s:23:"atversion_upd [...] ";s:17:"below_chosen_list";s:0:"";s:25:"addthis_wordpress_version";s:3:"4.0";s:22:"addthis_plugin_version";s:5:"5.3.4";s:25:"addthis_above_showon_home";b:1;s:25:"addthis_below_showon_home";b:1;s:26:"addthis_above_showon_pages";b:1;s:26:"addthis_below_showon_pages";b:1;s:31:"addthis_above_showon_categories";b:1;s:31:"addthis_below_showon_categories";b:1;s:29:"addthis_above_showon_archives";b:1;s:29:"addthis_below_showon_archives";b:1;s:21:"addthis_above_enabled";b:0;s:21:"addthis_below_enabled";b:0;s:19:"above_auto_ser [...] s:19:"above_custom_string";s:0:"";s:21:"addthis_sidebar_count";s:1:"5";s:23:"addthis_sidebar_enabled";b:0;s:24:"addthis_sidebar_position";s:4:"left";s:30:"addthis_mobile_toolbar_enabled";b:0;s:43:"addthis_mobile_toolbar_numPreferredServices";s: [...] bar_numPreferredServices";s:1:"4";s:31:"addthis_mobile_toolbar_position";s:6:"bottom";s [...] le_toolbar_position";s:6:"bottom";s:29:"addthis_mobile_toolbar_counts";b:1;s:19:"below_ [...] fb_tw_p1_sc";s:7:"toolbox";s:0:"";s:26:"addthis_above_showon_posts";b:1;s:29:"addthis_above_showon_excerpts";b:1;s:26:"addthis_below_showon_posts";b:1;s:29:"addthis_below_showon_excerpts";b:1;s:27:"addthis_sidebar_showon_home";b:1;s:28:"addthis_sidebar_showon_posts";b:1;s:28:"addthis_sidebar_showon_pages";b:1;s:31:"addthis_sidebar_showon_archives";b:1;s:33:"addthis_sidebar_showon_categories";b:1;s:34:"addthis_mobile_toolbar_showon_home";b:1;s:35:"addthis_mobile_toolbar_showon_posts";b:1;s:35:" [...] _mobile_toolbar_showon_posts";b:1;s:35:"addthis_mobile_toolbar_showon_pages";b:1;s:38:" [...] _mobile_toolbar_showon_pages";b:1;s:38:"addthis_mobile_toolbar_showon_archives";b:1;s:4 [...] bile_toolbar_showon_archives";b:1;s:40:"addthis_mobile_toolbar_showon_categories";b:1;}If the wp_options table is empty, you can search all of the tables with the --all-tables flag (Source)
wp db search "addthis" --all-tables --allow-rootThe above commmand can help catch WordPress plugin options that may live outside of the wp_options table.
Using Grep
grep is a fantastic tool for scanning files for a specific string extremely efficiently.
In this command we are searching for the update_option string in the addthis plugin folder’s files.
We can restrict the search to .php files only by using the --include flag with grep
grep -rHin update_option wp-content/plugins/addthis/ --include \*.phpThe output is the filename that contains the string, the line number and then the context before and after the occurrence of that string
wp-content/plugins/addthis/backend/AddThisFollowButtonsFeature.php:206: update_option('widget_' . $newWidgetsName, $newWidgetSettings);
wp-content/plugins/addthis/backend/AddThisFollowButtonsFeature.php:238: update_option('sidebars_widgets', $sideBarConfigs);
wp-content/plugins/addthis/backend/AddThisSharingButtonsFeature.php:440: update_option('widget_addthis_tool_by_class_name_widget', $outputWidgets);
wp-content/plugins/addthis/backend/AddThisFeature.php:721: update_option($this->settingsVariableName, $this->configs);
wp-content/plugins/addthis/backend/AddThisRegistrationFeature.php:761: update_option('smart_layer_profile', $profileId);
wp-content/plugins/addthis/backend/AddThisRegistrationFeature.php:765: update_option('addthis_settings', $configs);Hopefully this helps you track down and identify some of those option_names you are looking to backup, delete or modify on your WooCommerce store or WordPress site 🙂

2 thoughts on “Find out which WordPress Database Options Belong to Plugins”
Comments are closed.