web-dev-qa-db-fra.com

WP CLI recherche et remplace les variantes pour toutes les tables

Quelle est la différence entre:

wp search-replace 'http://' 'https://' --allow-root

à:

wp search-replace 'http://' 'https://' --all-tables-with-prefix --allow-root

AFAIU, la première recherche et remplace dans toutes les tables sans préfixe et la seconde dans toutes les tables --- avec ou sans préfixe.

Est-ce exact?

Je demande ceci après avoir obtenu beaucoup plus de tables avec la deuxième commande, mais la syntaxe semble un peu déroutante.

1
Arcticooling

Dans une installation WordPress, un certain nombre de tables de base de données sont enregistrées dans l'objet $wpdb. Pour voir ce qu'ils sont, vous pouvez exécuter la commande WP-CLI wp db tables.

Sur mon installation WP locale, il s'agit des tables $wpdb- enregistrées:

wp_users
wp_usermeta
wp_posts
wp_comments
wp_links
wp_options
wp_postmeta
wp_terms
wp_term_taxonomy
wp_term_relationships
wp_termmeta
wp_commentmeta
wp_blogs
wp_signups
wp_site
wp_sitemeta
wp_sitecategories
wp_registration_log
wp_blog_versions

Le préfixe de la table WordPress, par défaut, est wp_. Vous pouvez modifier cela dans votre fichier wp-config.php et choisir de le faire pour différentes raisons: vous devrez peut-être exécuter plusieurs installations WordPress à partir d'une seule base de données, ou vous souhaitez peut-être renforcer votre installation WordPress en rendant certaines choses plus difficiles pour les utilisateurs. attaquant à deviner.

Des plugins et/ou des thèmes peuvent créer de nouvelles tables dans la base de données WordPress: par exemple, Gravity Forms génère un ensemble de tables au format {$wpdb->prefix}_rg_{table_name} (ainsi, dans l'installation par défaut de WordPress, wp_rg_{table_name}). Lorsque vous exécutez wp search-replace {search} {replace}, ces autres tables ne feront pas l'objet d'une recherche , car l'objet $wpdb ne les connaît pas.

Pour rechercher ces tables non -$wpdb- enregistrées qui ont toujours le préfixe de table WordPress (c'est-à-dire wp_ ou ce que vous avez défini), vous utilisez l'indicateur --all-tables-with-prefix sur l'invocation wp search-replace.

Si vous souhaitez rechercher all les tables de votre base de données, quel que soit leur préfixe, vous pouvez utiliser le drapeau --all-tables. Soyez prudent, cependant, car cela peut avoir des conséquences inattendues (dans un environnement multisite, par exemple, ou dans le cas où plusieurs installations WordPress sont exécutées à partir d'une seule base de données).

En passant, je fortement recommande d'utiliser l'indicateur --dry-run pour chaque recherche et remplacement que vous effectuez, afin que vous puissiez voir ce qui sera affecté avant vous apportez des modifications à votre base de données.

Références

2
Pat J