从WordPress删除插件时,数据库中可能会剩下很多东西,这使数据库不必要地变大,甚至可能减慢查询速度。删除插件后清理WordPress数据库始终是一个好习惯。最近将一个客户网站启用非常轻量的GeneratePress主题,并决定将页面构建插件Elementor改为相对轻量的Beaver Builder,自然而然地需要理数据库。
本文将介绍删除Elementor插件后,以从options、postmeta、usermeta、posts表中删除剩余的数据。
主要包含以下内容:
- 删除Elementor插件和文件
- 删除Elementor文章类型
- 删除Elementor分类
- 从usermeta和postmeta删除Elementor meta_keys
- 从wp_options删除Elementor选项
删除Elementor插件和文件
wp plugin delete elementor --allow-root wp plugin delete elementor-pro --allow-root
rm -rf wp-content/uploads/elementor
删除Elementor文章类型
列出文章类型,并查看Elementor是否在其中
wp post-type list --allow-root | grep elementor
在这里我没找到相关信息。下面开始查找数据库:
wp db query "SELECT DISTINCT(post_type) FROM $(wp db prefix --allow-root)posts" --allow-root
elementor_library post类型在这里!
+---------------------+ | post_type | +---------------------+ | amn_exact-metrics | | attachment | | custom_css | | customize_changeset | | download | | edd_log | | edd_payment | | elementor_library | | gp_elements | | nav_menu_item | | oembed_cache | | page | | post | | pretty-link | | revision | | wpcf7_contact_form | +---------------------+
现在可以删除所有elementor_library post了
先列出它们:
wp post list --post_type=elementor_library --post_status=draft,revision,publish --allow-root
输出:
+-----+---------------------+---------------------+---------------------+-------------+ | ID | post_title | post_name | post_date | post_status | +-----+---------------------+---------------------+---------------------+-------------+ | 217 | Default Kit | default-kit | 2020-03-08 00:05:51 | publish | | 112 | WP css2js Minify | wp-css2js-minify | 2016-12-10 22:13:29 | publish | | 64 | Works with template | works-with-template | 2016-10-30 20:02:04 | publish | | 18 | Home Final Final | home-final-final | 2016-10-26 13:52:42 | publish | +-----+---------------------+---------------------+---------------------+-------------+
为了删除这些,必须使用--force
,否则将出现以下错误:
Warning: Posts of type 'elementor_library' do not support being sent to trash. Please use the --force flag to skip trash and delete them permanently.
使用WP-CLI删除elementor_library所有文章的命令:
wp post delete $(wp post list --post_type=elementor_library --post_status=draft,revision,publish --allow-root --skip-plugins --format=ids) --force --allow-root
应该看到类似这样的输出:
Success: Deleted post 217. Success: Deleted post 112. Success: Deleted post 64. Success: Deleted post 18.
删除Elementor分类
在搜索数据库时,我发现分类表中有Elementor引用,因此请确认你也有这些引用!
这是在数据库中搜索elementor
字符串的结果。
wp_posts:post_type 18:elementor_library wp_posts:post_type 64:elementor_library wp_posts:post_type 112:elementor_library wp_posts:post_type 217:elementor_library wp_term_taxonomy:taxonomy 5:elementor_library_type wp_term_taxonomy:taxonomy 6:elementor_library_type
计算分类表中的Elementor行数:
wp db query "SELECT COUNT(*) AS ElementorTaxonomy FROM $(wp db prefix --allow-root)term_taxonomy WHERE taxonomy LIKE '%elementor%'" --allow-root
输出:
+-------------------+ | ElementorTaxonomy | +-------------------+ | 2 | +-------------------+
现在可以删除这些了
wp db query "DELETE FROM $(wp db prefix --allow-root)term_taxonomy WHERE taxonomy LIKE '%elementor%'" --allow-root
清理Elementor postmeta
列出postmeta
包含字符串elementor
的表:
wp db query "SELECT DISTINCT(meta_key) FROM $(wp db prefix --allow-root)postmeta" --allow-root | grep elementor
输出:
_elementor_data _elementor_edit_mode _elementor_template_type _elementor_version _elementor_conditions _elementor_page_settings _elementor_pro_version _elementor_template_widget_type _elementor_global_widget_included_posts _elementor_template_sub_type _elementor_popup_display_settings _elementor_source_image_hash _elementor_controls_usage _elementor_css
计算一下有多少Elementor Postmeta:
wp db query "SELECT COUNT(*) AS ElementorPostMeta FROM $(wp db prefix --allow-root)postmeta WHERE meta_key LIKE '%elementor%'" --allow-root
输出:
+-------------------+ | ElementorPostMeta | +-------------------+ | 52 | +-------------------+
删除所有Elementor postmeta条目
wp db query "DELETE FROM $(wp db prefix --allow-root)postmeta WHERE meta_key LIKE '%elementor%'" --allow-root
清理Elementor usermeta
wp db query "SELECT DISTINCT(meta_key) FROM wp_usermeta" --allow-root | grep elementor
输出:
elementor_introduction elementor_admin_notices wp_elementor_connect_common_data
计算行数:
wp db query "SELECT COUNT(*) AS ElementorUserMeta FROM $(wp db prefix --allow-root)usermeta WHERE meta_key LIKE '%elementor%'" --allow-root
输出:
+-------------------+ | ElementorUserMeta | +-------------------+ | 2 | +-------------------+
清理:
wp db query "DELETE FROM $(wp db prefix --allow-root)usermeta WHERE meta_key LIKE '%elementor%'" --allow-root
清理Elementor选项(Options)
检查网站上自动加载的数据量,越少越好!
+-----------------------+---------+--------------------------------------------------------------------+ | name | status | message | +-----------------------+---------+--------------------------------------------------------------------+ | autoload-options-size | success | Autoloaded options size (116.58kb) is less than threshold (900kb). | +-----------------------+---------+--------------------------------------------------------------------+
列出属于Elementor的选项
wp option list --field=option_name --allow-root | grep elementor
输出:
elementor_active_kit elementor_allow_svg elementor_allow_tracking elementor_beta elementor_clear_cache elementor_connect_site_key elementor_container_width elementor_controls_usage elementor_cpt_support elementor_css_print_method elementor_custom_icon_sets_config elementor_default_generic_fonts elementor_disable_color_schemes elementor_disable_typography_schemes elementor_edit_buttons elementor_editor_break_lines elementor_enable_inspector elementor_exclude_user_roles elementor_font_awesome_pro_kit_id elementor_fonts_manager_fonts elementor_fonts_manager_font_types _elementor_general_settings _elementor_global_css elementor_global_image_lightbox elementor_icon_manager_needs_update _elementor_installed_time elementor_library_category_children elementor_load_fa4_shim elementor_log elementor_maintenance_mode_exclude_mode elementor_maintenance_mode_exclude_roles elementor_maintenance_mode_mode elementor_maintenance_mode_template_id elementor_page_title_selector elementor_pro_activecampaign_api_key elementor_pro_activecampaign_api_url elementor_pro_convertkit_api_key elementor_pro_donreach_api_key elementor_pro_donreach_api_url elementor_pro_drip_api_token elementor_pro_facebook_app_id elementor_pro_getresponse_api_key _elementor_pro_installed_time elementor_pro_license_key elementor_pro_mailchimp_api_key elementor_pro_mailerlite_api_key elementor_pro_recaptcha_secret_key elementor_pro_recaptcha_site_key elementor_pro_recaptcha_v3_secret_key elementor_pro_recaptcha_v3_site_key elementor_pro_recaptcha_v3_threshold elementor_pro_theme_builder_conditions elementor_pro_tracker_notice elementor_pro_upgrades elementor_pro_version elementor_remote_info_feed_data elementor_remote_info_library elementor_remote_info_templates_data elementor_replace_url elementor_reset_api_data elementor_rollback elementor_rollback_pro elementor_rollback_pro_separator elementor_scheme_color elementor_scheme_color-picker _elementor_scheme_last_updated elementor_scheme_typography _elementor_settings_update_time elementor_space_between_widgets elementor_stretched_section_container elementor_tracker_last_send elementor_tracker_notice elementor_typekit-kit-id elementor_upgrades elementor_use_mini_cart_template elementor_validate_api_data elementor_version elementor_viewport_lg elementor_viewport_md plugin_last_upgraded_date_elementor plugin_last_upgraded_date_elementor-pro-elementor-pro-php plugin_last_upgraded_version_elementor plugin_last_upgraded_version_elementor-pro-elementor-pro-php widget_elementor-library
计算行数:
wp db query "SELECT COUNT(*) AS ElementorOptions FROM $(wp db prefix --allow-root)options WHERE option_name LIKE '%elementor%'" --allow-root
输出:
+------------------+ | ElementorOptions | +------------------+ | 79 | +------------------+
从wp_options表中删除所有Elementor设置:
wp db query "DELETE FROM $(wp db prefix --allow-root)options WHERE option_name LIKE '%elementor%'" --allow-root
清理脚本
这是以上所有步骤的脚本,用于清理删除Elementor插件后清理WordPress数据库。
#!/usr/bin/env/bash # Purpose - clean Elementor leftover database rows from WordPress # Mike from https://zhanzhangb.com # deactivate and delete wp plugin deactivate elementor --allow-root wp plugin deactivate elementor-pro --allow-root wp plugin delete elementor --allow-root wp plugin delete elementor-pro --allow-root # clean up leftover Elementor uploads rm -rf wp-content/uploads/elementor # taxonomy wp db query "DELETE FROM $(wp db prefix --allow-root)term_taxonomy WHERE taxonomy LIKE '%elementor%'" --allow-root # custom post types wp post delete $(wp post list --post_type=elementor_library --post_status=draft,revision,publish --allow-root --skip-plugins --format=ids) --force --allow-root # postmeta wp db query "DELETE FROM $(wp db prefix --allow-root)postmeta WHERE meta_key LIKE '%elementor%'" --allow-root # usermeta wp db query "DELETE FROM $(wp db prefix --allow-root)usermeta WHERE meta_key LIKE '%elementor%'" --allow-root # options wp db query "DELETE FROM $(wp db prefix --allow-root)options WHERE option_name LIKE '%elementor%'" --allow-root