<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>INSPIRE TECH &#187; マルチサイト</title>
	<atom:link href="http://inspire-tech.jp/tag/%e3%83%9e%e3%83%ab%e3%83%81%e3%82%b5%e3%82%a4%e3%83%88/feed/" rel="self" type="application/rss+xml" />
	<link>http://inspire-tech.jp</link>
	<description>株式会社インスパイアデザインのプログラマーである家富正幸が、デザインやシステム開発、ソーシャルメディアや最近のトレンドなど、Webに関する様々な情報を発信しているブログです。</description>
	<lastBuildDate>Fri, 29 Jan 2016 05:25:58 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.8.41</generator>
	<item>
		<title>WordPressのマルチサイトで、子ブログでアップロードしたファイルの「実際のファイルパス」を取得する関数を書いた</title>
		<link>http://inspire-tech.jp/2012/06/calc_the_real_file_path_for_child_blog_of_wordpress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=calc_the_real_file_path_for_child_blog_of_wordpress</link>
		<comments>http://inspire-tech.jp/2012/06/calc_the_real_file_path_for_child_blog_of_wordpress/#comments</comments>
		<pubDate>Fri, 29 Jun 2012 16:59:34 +0000</pubDate>
		<dc:creator><![CDATA[家富 正幸]]></dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[問題解決]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[マルチサイト]]></category>

		<guid isPermaLink="false">http://inspire-tech.jp/?p=1394</guid>
		<description><![CDATA[WordPressのマルチサイトを利用して子ブログを作った場合、 子ブログでアップロードしたメディアファイルは、 全て /wp-content/blogs.dir/{blog_id}/{year}/{month}/{fi [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>WordPressのマルチサイトを利用して子ブログを作った場合、<br />
子ブログでアップロードしたメディアファイルは、<br />
全て <code>/wp-content/blogs.dir/{blog_id}/{year}/{month}/{file_name}</code> に保存されるようになっています。</p>
<p>しかしながら、実際にアップロードしたファイルのURLを取得すると、<br />
<code>/{account_name}/files/{year}/{month}/{file_name}</code> というURLが帰ってきます。<br />
これは、マルチサイト用の <code>.htaccess</code> にURLの書き換え処理が記載されているためです。</p>
<pre class="brush: plain">
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
</pre>
<p>このURLに直接アクセスすればファイルは表示されますし、通常の利用上では全く問題はありません。</p>
<p>しかしながら、サムネイルを生成する際に非常に便利なライブラリである TimThumbなどを利用する際に、この書き換えられたURLが問題になります。</p>
<ul>
<li><a href="http://code.google.com/p/timthumb/" title="TimThumb" target="_blank">TimThumb</a></li>
</ul>
<p>TimThumbは、与えられたURLから実際のファイルパスを計算し、ファイルを読み込もうとします。</p>
<p>しかし、この与えられたURLは <code>.htaccess</code> により書き換えられたダミーのURLのため、実際にこの場所にはファイルは存在しません。</p>
<p>そのため、書き換えられる前のURLが必要になります。</p>
<h3><span>関数作った</span></h3>
<p>下記のような関数を作ってみました。</p>
<pre class="brush: php">
function ms_calc_media_url($blog_id, $media_url)
{
	global $wpdb;

	switch_to_blog($wpdb->siteid);
	$url = preg_replace('|^' . get_blog_option($blog_id, 'siteurl') . '/(files/[\d]{4}/[\d]{2}/.+)$|', get_bloginfo('url') . '/wp-content/blogs.dir/' . $blog_id . '/$1', $media_url);
	restore_current_blog();

	return $url;
}
</pre>
<p><code>$blog_id</code> に当該のファイルをアップロードした子ブログのIDを指定して、<code>$media_url</code> にファイルのURLを与えれば、書き換えられる前のURLを計算して出力します。</p>
<p>この関数を使うことで、問題無くTimThumbなどのライブラリを活用できます。</p>
]]></content:encoded>
			<wfw:commentRss>http://inspire-tech.jp/2012/06/calc_the_real_file_path_for_child_blog_of_wordpress/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>WordPressのマルチブログで、子ブログにデフォルトのテーマを設定する方法（子テーマ対応）</title>
		<link>http://inspire-tech.jp/2012/06/default_theme_setting_for_child_blog/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=default_theme_setting_for_child_blog</link>
		<comments>http://inspire-tech.jp/2012/06/default_theme_setting_for_child_blog/#comments</comments>
		<pubDate>Thu, 28 Jun 2012 06:55:59 +0000</pubDate>
		<dc:creator><![CDATA[家富 正幸]]></dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[問題解決]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[マルチサイト]]></category>

		<guid isPermaLink="false">http://inspire-tech.jp/?p=1382</guid>
		<description><![CDATA[WordPressをマルチブログで利用する場合に、子サイトのテーマをあらかじめ設定しておく方法を紹介します。 親サイトの functions.php に下記の記述をするだけです。 function default_the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>WordPressをマルチブログで利用する場合に、子サイトのテーマをあらかじめ設定しておく方法を紹介します。</p>
<p>親サイトの <code>functions.php</code> に下記の記述をするだけです。</p>
<pre class="brush: php">
function default_theme_setting()
{
	update_option('template', 'theme_name');
	update_option('stylesheet', 'theme_name');
	update_option('current_theme', 'Theme Name');
}

add_action('populate_options', 'default_theme_setting');
</pre>
<p><code>theme_name</code> となっている箇所は、テーマのディレクトリ名を入れます。<br />
<code>Theme Name</code> となっている箇所は、テーマの名称を入れておきます。</p>
<h3><span>子テーマを指定する方法</span></h3>
<p>上記の設定で、あるテーマの子テーマを設定しようとすると上手くいきません。<br />
これは、下記の記述にすることで対応可能です。</p>
<pre class="brush: php">
function default_theme_setting()
{
	update_option('template', 'parent_theme_name');
	update_option('stylesheet', 'child_theme_name');
	update_option('current_theme', 'Child Theme Name');
}

add_action('populate_options', 'default_theme_setting');
</pre>
<p><code>parent_theme_name</code> は親テーマのディレクトリ名を入れます。<br />
<code>child_theme_name</code> は子テーマのディレクトリ名を入れます。</p>
<p>要は <code>stylesheet</code> というオプションに子テーマ名を設定し、<code>template</code> というオプションには親テーマを設定しておかなきゃイカンよ、ということです。</p>
]]></content:encoded>
			<wfw:commentRss>http://inspire-tech.jp/2012/06/default_theme_setting_for_child_blog/feed/</wfw:commentRss>
		<slash:comments>79</slash:comments>
		</item>
	</channel>
</rss>
