Identifiez les options de base de données liées à vos plugins WordPress

Découvrez quelles options de base de données WordPress appartiennent aux plugins

Cet article vous montrera comment identifier quelles options de plugins WordPress dans la table  wp_options  appartiennent à un plugin spécifique.

Normalement, les développeurs recherchent manuellement dans la table wp_options avec phpMyAdmin ou Adminer (version plugin WordPress), mais cela peut souvent être très fastidieux car vous devez paginer parfois des centaines de pages !

Lorsque nous disposons d’outils de ligne de commande Linux via SSH comme WP-CLI et grep, nous pouvons efficacement identifier quelles options dans la base de données WordPress appartiennent à un plugin spécifique et gagner un temps précieux !

Dans cet article, je vais montrer les techniques que j’utilise habituellement pour trouver ces options afin de pouvoir corriger les paramètres, les sauvegarder, etc. en faisant correspondre le option_name WordPress au plugin.Veuillez noter que ces deux approches nécessiteront un terminal et un accès SSH de quelque sorte à votre installation WordPress.

Je supposerai que WP-CLI et grep sont déjà installés sur le système Linux. Kinsta, WPEngine et FastNyx fournissent un accès SSH avec WP-CLI et grep disponibles.

Vous trouvez ça compliqué ? Contactez-moi pour une assistance rapide et personnalisée !

Découvrez quelles valeurs de base de données option_name appartiennent aux plugins WordPress

Les deux premières techniques utilisent mon outil préféré : WP-CLI, après quoi il y a une méthode utilisant l’outil Linux grep.

WP-CLI

J’avais un client sur Codeable qui avait environ 3 plugins de partage social différents ! Je voulais écrire un script utilisant WP-CLI pour supprimer par lots toutes ces valeurs de plugins WordPress dans la base de données qui n’étaient plus nécessaires. Dans ce tutoriel, j’essaierai d’identifier les option_names d’addthis dans la table wp_options de la base de données WordPress.Dans cette section, nous utiliserons WP-CLI.

Utilisation de la commande option de WP-CLI

En utilisant la commande option list couplée à la restriction du  --field  à  option_names  uniquement, nous pouvons ensuite utiliser grep pour n’afficher que les option_names qui contiennent la chaîne addthis.

wp option list --field=option_name --allow-root | grep addthisCode language: PHP (php)

Cela nous donnera une liste de toutes les options de la base de données WordPress contenant “addthis” dans leur nom:

addthis_settings
addthis_share
addthis_product
addthis_plugin_controls

Si vous souhaitez voir toutes les option_values pour chaque option_name contenant  addthis, vous pouvez utiliser cette commande qui bouclera à travers chacune d’elles :

wp option list --field=option_name --allow-root | grep addthis | xargs --replace=% wp option get % --allow-rootCode language: JavaScript (javascript)

Notez qu’il s’agit de tableaux sérialisés :

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,
)Code language: PHP (php)

Si vous souhaitez mettre tout cela au format JSON, vous pouvez utiliser le drapeau --format, comme avec cette commande:

wp option list --field=option_name --allow-root | grep addthis | xargs --replace=% wp option get % --format=json --allow-rootCode language: JavaScript (javascript)

Le résultat obtenu est bien au format JSON :

{"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}
Code language: JSON / JSON with Comments (json)

S’ils sont sérialisés, vous pouvez les enregistrer tous dans des fichiers séparés pour les examiner avec cette mini boucle de script bash :

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
doneCode language: PHP (php)

Vous aurez un fichier séparé pour chaque option_name dans le dossier /tmp à examiner ensuite.Si vous ne les voulez pas au format JSON, ceci devrait faire l’affaire :

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
doneCode language: PHP (php)

Si c’est une option_value plutôt qu’un option_name que vous recherchez dans le plugin WordPress, essayez ceci et remplacez addthis par la valeur que vous recherchez :

wp option list --field=option_value --allow-root | grep addthisCode language: PHP (php)

Résultats:

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;}
Code language: CSS (css)

Recherche dans la base de données avec WP-CLI

Cette commande recherchera dans la table wp_options uniquement, dans les colonnes  option_name  et  option_value.

Nous utilisons également la commande  wp db prefix, qui est très pratique :

wp db search "addthis" $(wp db prefix --allow-root)options --allow-root

Voici la sortie :

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;}Code language: JavaScript (javascript)

Si la table wp_options est vide, vous pouvez rechercher dans toutes les tables avec l’option –all-tables :

wp db search "addthis" --all-tables --allow-rootCode language: JavaScript (javascript)

La commande ci-dessus peut aider à détecter les options des plugins WordPress qui se trouvent en dehors de la table wp_options.

Utilisation de la commande db de WP-CLI

Une autre façon d’obtenir le même résultat est d’utiliser la commande wp db query de WP-CLI. Voici un exemple :

wp db query "SELECT option_name FROM wp_options WHERE option_name LIKE '%addthis%';"

Cela nous donnera le même résultat que la commande précédente :

+---------------------------+
| option_name |
+---------------------------+
| addthis_settings |
| addthis_share |
| addthis_product |
| addthis_plugin_controls |
+---------------------------+

Utilisation de grep

grep est un outil fantastique pour analyser des fichiers à la recherche d’une chaîne spécifique de manière extrêmement efficace.

Dans cette commande, nous recherchons la chaîne update_option dans les fichiers du dossier du plugin addthis.

Nous pouvons restreindre la recherche uniquement aux fichiers .php en utilisant l’option –include avec grep :

grep -rHin "update_option" wp-content/plugins/addthis/ --include \*.phpCode language: PHP (php)

Cette commande recherchera récursivement (-R) toutes les occurrences de “update_option” dans les fichiers du plugin spécifié. Cela vous donnera une idée des noms d’options que le plugin utilise.

La sortie affiche le nom du fichier contenant la chaîne, le numéro de ligne, ainsi que le contexte avant et après l’occurrence de cette chaîne :

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);Code language: PHP (php)

Conclusion

J’espère que cela vous aidera à localiser et à identifier certains de ces option_names que vous souhaitez sauvegarder, supprimer ou modifier sur votre boutique WooCommerce ou votre site WordPress.

En utilisant ces techniques, vous pouvez rapidement identifier quelles options de base de données appartiennent à un plugin spécifique dans WordPress. Cela peut être particulièrement utile lors du nettoyage de votre base de données après la désinstallation d’un plugin, ou lors du débogage de problèmes liés aux options de plugins.

Rappelez-vous toujours de faire une sauvegarde de votre base de données avant d’apporter des modifications, surtout si vous prévoyez de supprimer des options. Ces méthodes peuvent vous faire gagner beaucoup de temps par rapport à la recherche manuelle dans phpMyAdmin ou d’autres interfaces de gestion de base de données. Elles sont particulièrement utiles pour les développeurs et les administrateurs qui gèrent de nombreux sites WordPress ou des installations complexes avec de nombreux plugins.

Simplifiez la gestion de votre base de données WordPress ! Contactez-moi pour une assistance professionnelle et des résultats garantis !

Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.

Parlons de votre projet dès aujourd'hui »

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête, n'hésitez pas à me contacter, je serai ravi d'en discuter avec vous !

Opinions