Home > CUSTOMIZED | WordPress > WordPressをlocalと公開で共通化

WordPressをlocalと公開で共通化

ローカルに作成しているものと公開している状態のものを共通化

/wp-config.php

require_once(ABSPATH . 'wp-settings.php');前に

/// @to plus
$ArrSetFlg['url'] = 1; // 1で以下有効

$ArrSetLocalToo['url0'] = 'http://';
if($_SERVER['SERVER_PORT'] == 443)
	$ArrSetLocalToo['url0'] = 'https://';

$ArrSetLocalToo['url1']= $_SERVER['SERVER_NAME'];
if(isset($_SERVER['HTTP_HOST']) && strlen($_SERVER['HTTP_HOST'])>0)
	$ArrSetLocalToo['url1']= $_SERVER['HTTP_HOST'];

$ArrSetLocalToo['url2'] = str_replace('\\','/',dirname(realpath(__FILE__)));
$ArrSetLocalToo['url2']= str_replace($_SERVER['DOCUMENT_ROOT'],'',$ArrSetLocalToo['url2']);

$ArrSetLocalToo['url'] = $ArrSetLocalToo['url0'].$ArrSetLocalToo['url1'].$ArrSetLocalToo['url2'];
$ArrSetLocalToo['url'] = trim($ArrSetLocalToo['url'], '/');
$ArrSetLocalToo['m_url'] = 'http://なんつら'.$ArrSetLocalToo['url2'];	// 変換対象
/// @to plus

/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)
	&& isset($GLOBALS['ArrSetFlg']['url']) && $GLOBALS['ArrSetFlg']['url']==1
){
	if( strstr($output,$GLOBALS['ArrSetLocalToo']['m_url'])){
		$output = str_replace($GLOBALS['ArrSetLocalToo']['m_url'],'',$output);
		$output = $GLOBALS['ArrSetLocalToo']['url'].$output;
	}
}
return $output;
/// @to plus

@2010.11.14
$output = apply_filters( 'option_' . $setting, maybe_unserialize( $value ) );
を『$setting』⇒『$option』へ変更
@2010.12.13
勉強用に読みやすく変更中



ココまでの経緯

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を立てる(考えてみたら必要なかった)とか
諸々あって考え直して結果現状。

タグ: , ,

関連する投稿

Comments:0

Comment Form
Remember personal info

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:主にプログラム勉強メモ部屋

Home > CUSTOMIZED | WordPress > WordPressをlocalと公開で共通化

Search
Option
  • Twitter
  • 絵板
Feeds
commercial
Mobile
Meta
Tag Cloud
TOP10
commercial

Return to page top