サポート » 使い方全般 » マルチサイト化でサブディレクトリにする方法

  • 解決済 zatton

    (@zatton)


    WordPressの2.9.2を使用していて、先日リリースされたWordPress 3.0にアップデートしました。

    こちらのネットワークの作成を参考にwp-config.phpに

    define (‘WP_ALLOW_MULTISITE’, true);

    を明記し、プラグインを全てOFF、[ツール]-[ネットワーク]にアクセスしたところサブドメインとサブディレクトリを選択する項目が出てきません。表示されたのは「サブドメインのインストール」に

    新規インストールではないため、WordPress ネットワーク内のサイトはサブドメインを使う必要があります。 メインサイトをサブディレクトリにインストールしている場合、修正したパーマリンク構造を使う必要があり、現存リンクを壊してしまう可能性もあります。

    と表示されます。

    使用しているサーバーはレンタルサーバで、そのサーバーではサブドメインが使用できないといわれています。そんなこともあり、できればサブディレクトリを使用したいと思っているのですが、どのようにしたらサブディレクトリでマルチサイト化することができるでしょうか?

    よろしくお願いします。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • サブディレクトリ形式を選べる条件があって、公開済み投稿がある(=既存サイト)と弾かれてしまうみたいです。
    最終手段以外に、いい手があるとよいのですが……。

    (ドキュメントは鋭意作成中なので、ソースコードを。。)
    wp-admin/network.php

    function allow_subdirectory_install() {
    	global $wpdb;
    	if ( apply_filters( 'allow_subdirectory_install', false ) )
    		return true;
    
    	if ( defined( 'ALLOW_SUBDIRECTORY_INSTALL' ) && ALLOW_SUBDIRECTORY_INSTALL )
    		return true;
    
    	$post = $wpdb->get_row( "SELECT ID FROM $wpdb->posts WHERE post_date < DATE_SUB(NOW(), INTERVAL 1 MONTH) AND post_status = 'publish'" );
    	if ( empty( $post ) )
    		return true;
    
    	return false;
    }

    (メッセージ原文: Because your install is not new, the sites in your WordPress network must use sub-domains. The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.)

    bonoさん

    返信が遅くなってすみません。

    > サブディレクトリ形式を選べる条件があって、公開済み投稿がある(=既存サイト)と弾かれてしまうみたいです。

    そうなんですか、残念です。

    せっかくのツールなので、記事があってもサブディレクトリが使えればいいのに。

    回答ありがとうございました。

    サーバーによって違うかも知れませんが既存のサイトがあってもサブディレクトリにマルチブログを作ることができました。
    私のブログを参考にしてみてください。
    サブディレクトリでマルチブログ(wordpress3.0)さくらインターネット

    すみません、上記のリンクが間違っています。
    サブディレクトリでマルチブログ(wordpress3.0)さくらインターネット

    また、エックスサーバーでも既存の投稿があるサイトでもマルチブログ化できました。

    WordPressの3.3.1を使用しています。(アップグレードではなく最初からです)
    現在運用中のwpをサブディレクトリでマルチ化する必要があり、wp-config.phpを修正し、有効化しているプラグインを一時停止状態にして[ツール]→[ネットワークの設定]と辿っていった所、サブドメインしか選択できなくなっています(サブディレクトリの設定が表示されていない)。
    色々と調べていたら、公開済み投稿がある場合は設定できないということが分かりました。
    既存のサイトは固定ページのみ使用しており、2件のテスト記事のみが投稿されていただけでしたので、全て削除しました。これで公開済みの投稿はない状態になったと思い、改めて設定画面まで来たのですが、やっぱりサブディレクトリの設定は表示されませんでした。

    ちなみにサーバーはロリポップのロリポプランです。
    どなたか情報がございましたらご教授いただきたいと存じます。

    WPの次の仕様が原因のようですね。
     

    次の場合にはサブディレクトリ型インストールを選べません。
    WordPressを設置してから1ヶ月以上経っている場合。既存のパーマリンク構造に問題が生じるため。(この問題は今後のバージョンで修正される見込みです。See Switching between subdomains and subfolders for more information.)

     
    固定ページもすべて削除したのでしょうか?
    投稿だけでなく、固定ページが残っているとサブディレクトリは選択出来ません。
    設置後1ヶ月の判断は、投稿や固定ページなどの公開日時が元になっていますので、問題の投稿あるいは固定ページの公開日時を変更するだけでも大丈夫です。
    管理画面で操作する場合は、編集画面で公開日時の[編集]リンクにて編集後に更新します。
    データベースを直接操作する場合は、’post_date’を変更するといいです。
    公開日時が1ヶ月以内の投稿および固定ページは編集する必要はありません。
    それでも駄目な場合は、新規にインストールしてしまってはいかがでしょうか?

    お世話様でございます。

    「1ヶ月以上経過している場合」という仕様は知りませんでした。

    私が削除したのは投稿のみで固定ページは何もしておりませんでした。
    固定ページ全ての公開日時を本日日付より7日前に変更した後、再度プラグインを全て停止状態にして[ネットワークの設定]を開いたのですが、やはりサブディレクトリを選択する事が出来ませんでした。

    やはりどうしてもサブディレクトリ化するには新規インストールは避けられないのでしょうね。
    ありがとうございました。大変勉強させていただきました。

    phpMyAdmin等でWPのデータベースを選択して、直接次のSQLを実行してみてください。
    結果が表示されれば、問題となっている投稿が分かります。
     

    SELECT ID FROM [プレフィックス]posts WHERE post_date < DATE_SUB(NOW(), INTERVAL 1 MONTH) AND post_status = 'publish'"

    [プレフィックス]は、インストール時に指定したテーブルの接頭辞になります。
    1件も表示されなければ、選択肢にサブディレクトリが表示されるはずですが、ネットワークの設定画面には何と表示されていますか?
    例えば、原因別に次のようなメッセージが表示されますので、そのままのメッセージをコピーして教えてください。
     

    localhost をお使いのため、WordPress ネットワーク内のサイトはサブディレクトリを使う必要があります。

    お世話になっております。

    アドバイス頂いたSQLをphpMyAdminにて流してみました所、8件のレコードが抽出されました。
    その内7件は、post_typeにnav_menu_itemとありました。恐らく[外観]→[メニュー]より設定したものというのがデータを見て分かりました。
    最後の1件のデータのpost_typeにはwpcf7_contact_formとあり、これはプラグインで使用しているcontact_formのデータだと思います。
    メニュー及びコンタクトフォームの投稿データの日付をコントロールパネルから変更しようとしたのですが見つかりませんでしたので、phpMyAdminより直接、post_dateとpost_date_gmtを変更した所、ようやくサブディレクトリの選択肢が[ネットワーク設定]で表示されました。
    本当にありがとうございました。
    投稿データのみならず固定ページの公開日及びメニュー、プラグインで作成したデータの日付まで参照しているとは・・・勉強になりました。

    モデレーター gatespace

    (@gatespace)

    こんにちは。
    解決したようで何よりですが、
    このフォーラムでは同じような内容の質問でも、基本的に便乗質問が禁止されており、
    そういった場合には別途スレッドをたててもらうようになります。
    (その際、元のスレッドにリンクを張ってもらうと、他の方も分かりやすいです)

    これは、スレッドを開始した人にしか「解決済み」にできないからです。
    (つまり、開始した人の疑問が解決されても便乗質問がある以上、いつまでも「解決済み」にできない)

    今回は、スレッドの開始時期が古い事と、一定の回答が得られているので私の方で「解決済み」としますが、
    次回以降は上記の点をふまえて投稿していただけると助かります。

    投稿データのみならず固定ページの公開日及びメニュー、プラグインで作成したデータの日付まで参照しているとは・・・勉強になりました。

    →投稿、固定ページの他、カスタムメニューなどwp_postテーブルで「投稿タイプ(post_type)」が定義されているものが対象なのでは?
    デフォルトで定義されているものの他に、プラグイン(Contact Form 7など)で利用されている場合もあります。
    日本語Codex「投稿タイプ」

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「マルチサイト化でサブディレクトリにする方法」には新たに返信することはできません。