L'URL de mon site dans la base de données affiche sitea.com
. Est-il possible de changer ceci via functions.php
en siteb.com
, tout en maintenant toujours sitea.com
dans la base de données?
Mon scénario actuel est que trois développeurs travaillent localement et que nous souhaitons utiliser une base de données. Nous nous connectons tous à une base de données distante. Cependant, les URL de notre environnement de développement local et de la base de données distante sont différentes, ce qui provoque des liens rompus.
Existe-t-il un moyen de changer la variable siteurl
dans functions.php
tout en conservant la même URL dans la base de données?
Merci d'avance.
Si au lieu de modifier functions.php, vous pouvez modifier wp-config.php, vous pouvez utiliser les éléments suivants:
define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');
Source: https://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php
Cela ne devrait pas du tout être traité par votre thème, mais par votre fichier wp-config.php local. Vous pouvez charger de manière conditionnelle des définitions wp-config locales et uniques en encapsulant un file_exists
conditionnel. Voici un exemple de Mark Jaquith:
if ( file_exists( dirname( __FILE__ ) . '/local-config.php' ) ) {
include( dirname( __FILE__ ) . '/local-config.php' );
define( 'WP_LOCAL_DEV', true ); // We'll talk about this later
} else {
define( 'DB_NAME', 'production_db' );
define( 'DB_USER', 'production_user' );
define( 'DB_PASSWORD', 'production_password' );
define( 'DB_Host', 'production_db_Host' );
}
Voir ici pour plus de détails: https://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
Le filtre theme_root_uri
permettra de modifier à la volée les URL renvoyées par get_stylesheet_directory_uri()
et get_template_directory_uri()
:
/**
* Filters the URI for themes directory.
*
* @since 1.5.0
*
* @param string $theme_root_uri The URI for themes directory.
* @param string $siteurl WordPress web address which is set in General Options.
* @param string $stylesheet_or_template Stylesheet or template name of the theme.
*/
function wpse_theme_root_uri( $theme_root_uri, $siteurl, $stylesheet_or_template ) {
// $siteurl will be http://sitea.com via get_option( 'siteurl' )
return str_replace( $siteurl, 'http://siteb.com', $theme_root_uri );
}
add_filter( 'theme_root_uri', 'wpse_theme_root_uri', 10, 3 );
Le filtre plugins_url
permettra à l'URL renvoyée par plugin_dir_url()
d'être modifiée de la même manière:
/**
* Filters the URL to the plugins directory.
*
* @since 2.8.0
*
* @param string $url The complete URL to the plugins directory including scheme and path.
* @param string $path Path relative to the URL to the plugins directory. Blank string
* if no path is specified.
* @param string $plugin The plugin file path to be relative to. Blank string if no plugin
* is specified.
*/
function wpse_plugins_url( $url, $path, $plugin ) {
return str_replace( get_option( 'siteurl' ), 'http://siteb.com', $url );
}
add_filter( 'plugins_url', 'wpse_plugins_url', 10, 3 );
En parcourant /wp-includes/link-template.php
, de nombreuses autres fonctions renvoient des URL, mais elles peuvent être filtrées selon la même approche que celle décrite ci-dessus.
Les valeurs pour les options siteurl
et home
peuvent également être modifiées à la volée:
function wpse_pre_option_siteurl_and_home( $pre_option, $option ) {
return 'http://siteb.com';
}
add_filter( 'pre_option_siteurl', 'wpse_pre_option_siteurl_and_home', 10, 2 );
add_filter( 'pre_option_home', 'wpse_pre_option_siteurl_and_home', 10, 2 );