- 2009-09-13 (日) 1:15
- CUSTOMIZED | WordPress
ココまでの経緯
2009年4月25日 @ 22:01
完全に同じものを使うためにSQLiteにしているわけだけど、DBにURLを絶対パスで登録されている。
ので
WordPressをローカルで使用するとイチイチ本番に飛ばされるのがとっても不満。
そこで相対パス変換にすることを考え始める
しかしちょっと読んでわかる程度ではない複雑さで
『サイトURL』と『wordpressURL』が違うとか何事?という状態。
『TinyMCEのリンク挿入ボタンからURLを入力すると、自動的に絶対URLに変更されるのを変更されないようにする』というのは
'relative_urls' => 'false'
を
'relative_urls' => 'true'
と情報を見つけたが、1年前の情報につき、随分ディレクトリ構成違う。
※/wp-admin/includes/post.phpが対象の様子。
試しに『remove_script_host』『convert_urls』もtrueに変更するが反応なし。
/wp-includes/general-template.phpの『get_option(なんつら)』は結構呼ばれる。
wp-setting.phpはあくまで設定ファイルだから変更には当然使えない。無念。
『サイトURL』と『wordpressURL』を『./』にしたとこで、『http://./~』となるだけだった。
2009年4月27日 @ 0:51
色々やってみた結果、相対パスに変更は構造上ムリっぽいと結論。
せめてローカルでも使えるように変更したいところ。
『
wp-config.php
の
require_once(ABSPATH . 'wp-settings.php');
の前に以下を記載。
/// @to plus $ArrSetLocalToo['url0'] = 'http://'; if($_SERVER['SERVER_PORT'] == 443) $ArrSetLocalToo['url0'] = 'https://'; $ArrSetLocalToo['url1']= $_SERVER['SERVER_NAME']; $ArrSetLocalToo['url2']= $_SERVER['REQUEST_URI']; $ArrSetLocalToo['url']=$ArrSetLocalToo['url0'] . $ArrSetLocalToo['url1'] . $ArrSetLocalToo['url2']; $ArrSetLocalToo['url'] = trim($ArrSetLocalToo['url'], '/'); /// @to plus
次に
/wp-includes/general-template.php
function get_bloginfo($show = '', $filter = 'raw') {内
return $output;の前に
/// @to plus
if(
strstr($output,get_option('home'))||
strstr($output,get_option('siteurl'))
){
if(strstr($output,get_option('home')))
$output = str_replace(get_option('home'),'',$output);
if(strstr($output,get_option('siteurl')))
$output = str_replace(get_option('siteurl'),'',$output);
$output = $GLOBALS['ArrSetLocalToo']['url'].$output;
}
/// @to plus
と書いてみた
が
これは使えない。
リンクやwp-adminは使えない。全てリセット
2009年4月27日 @ 12:44
更に遡って『get_option』が全体に影響を出せることに気づく。
が、都合が悪いことに気付く。
return get_option('home');てループになるよね!
階層かわったら$_SERVER['REQUEST_URI']も変わっちゃうよね!(管理画面とか)
でwp-config.phpを変更。
/wp-config.php
/// @to plus $ArrSetLocalToo['url0'] = 'http://'; if($_SERVER['SERVER_PORT'] == 443) $ArrSetLocalToo['url0'] = 'https://'; $ArrSetLocalToo['url1']= $_SERVER['SERVER_NAME']; //$ArrSetLocalToo['url2']= $_SERVER['REQUEST_URI']; if(strstr($_SERVER['SERVER_NAME'],'localhost')) $ArrSetLocalToo['url2']= '/www/wp'; else $ArrSetLocalToo['url2']= '/wp'; $ArrSetLocalToo['url'] = $ArrSetLocalToo['url0'] . $ArrSetLocalToo['url1'] . $ArrSetLocalToo['url2']; $ArrSetLocalToo['url'] = trim($ArrSetLocalToo['url'], '/'); $ArrSetLocalToo['m_url'] = 'http://localhost/www/wp'; // 変換対象 /// @to plus
非常にurl2とm_urlが面白くない。
けどとりあえずはこれで。
/wp-includes/functions.php
function get_option(~)の最後のreturnを修正。
/// @to plus
$output = apply_filters( 'option_' . $option, maybe_unserialize( $value ) );
if(!is_array($output) && !is_object($output)){
if( strstr($output,$GLOBALS['ArrSetLocalToo']['m_url'])){
$output = str_replace($GLOBALS['ArrSetLocalToo']['m_url'],'',$output);
$output = $GLOBALS['ArrSetLocalToo']['url'].$output;
}
}
return $output;
/// @to plus
この処理をすることでDBにURL登録の意味わからないけど(゚ε゚)キニシナイ!!
2010.11.14 に 3.X系になり
$output = apply_filters( 'option_' . $setting, maybe_unserialize( $value ) );
を『$setting』⇒『$option』へ変更された。
まぁ自己環境の変更(バーチャルホストの使用)とか
複数wordpressを立てる(考えてみたら必要なかった)とか
諸々あって考え直して結果現状。
関連する投稿
- Newer: 注目FREEツール
- Older: [wp×SQLite]存在しないカテゴリ名でPDOエラー
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://qooga.jb-jk.net/wp/2009/09/wordpress%e3%82%92local%e3%81%a8%e5%85%ac%e9%96%8b%e3%81%a7%e5%85%b1%e9%80%9a%e5%8c%96/trackback/
- Listed below are links to weblogs that reference
- http://qooga.jb-jk.net/wpWordPressをlocalと公開で共通化 from MOT:主にプログラム勉強メモ部屋