データベース内の私のサイトのURLはsitea.com
です。これをfunctions.php
を介してsiteb.com
に変更することはできますが、それでもデータベース内でsitea.com
を維持しますか?
私の現在のシナリオは、私は3人の開発者が現地で働いていて、1つのデータベースを使いたいということです。私たち全員がリモートデータベースに接続しますが、ローカル開発環境からのURLとリモートデータベースからのURLが異なるため、リンクが解除されます。
データベースに同じURLがあるのに、functions.php
のsiteurl
を変更する方法はありますか?
前もって感謝します。
Functions.phpを変更する代わりにwp-config.phpを変更できる場合は、次のようにします。
define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');
出典: https://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php
これはあなたのテーマによって処理されるべきではなく、あなたのローカルのwp-config.phpファイルです。条件付きのfile_exists
をラップすることで、ローカルで一意のwp-config定義を条件付きで読み込むことができます。これが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' );
}
詳細についてはここを参照してください。 https://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
theme_root_uri
フィルタは、get_stylesheet_directory_uri()
とget_template_directory_uri()
によって返されるURLをその場で変更することを可能にします。
/**
* 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 );
plugins_url
フィルタはplugin_dir_url()
によって返されたURLが同様の方法で変更されることを可能にします:
/**
* 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 );
/wp-includes/link-template.php
を見ると、URLを返す関数は他にもたくさんありますが、上で示したのと同じ方法でそれらをフィルタリングできます。
オプションsiteurl
とhome
の値もその場で変更することができます。
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 );