web-dev-qa-db-ja.com

新しいサイトがネットワーク上に作成されたときに書き換えルールをフラッシュする

私はマルチサイトの設定で作業していて、いくつかのカスタム投稿タイプを作成しました。フロントエンドで投稿タイプページのいずれかを表示しようとすると、白い画面が表示されます。この問題を調べたところ、フラッシュ書き換えルールで問題が解決したようです。これに関する問題は、管理者がパーマリンク設定にアクセスできないため、自分でフラッシュできないことです。

私は現在テーマをアクティブにするときフラッシュするために次のコードを使用しています、しかしユーザーが別のテーマに切り替えなければならなくて、そして最初のテーマに戻る必要があるのでこれは理想的ではありません。だから私は新しいサイトが作られたときに働くように次のコードを修正する方法を見つけようとしている、それ故に最初からカスタムポストタイプが働いている。 ---

/* Flush rewrite rules for custom post types. */
add_action( 'after_switch_theme', 'bt_flush_rewrite_rules' );

/* Flush your rewrite rules */
function bt_flush_rewrite_rules() {
     flush_rewrite_rules();
}

どうぞよろしくお願いします。

更新

私はユーザーがそのようなmysite.com/theirsiteのようなサイトのフロントエンドにサインアップするメインサイトを持っています。デフォルトのテーマが設定されています。 Imがそのようにフラッシュ・リライトを配置しようとしているのは、テーマを切り替えるのではなく、サイトを作成するときにうまくいくということです。管理ダッシュボードは単純化されているので、パーマリンクやテーマ - >エディタにアクセスすることはできません。

カスタム投稿タイプを作成するときは、書き換えをフラッシュすることになっているので、追加のコードを使用する必要すらないと思いますか。

それが助けになるならこれは私の登録投稿タイプコードです -

http://Pastebin.com/XsRjLj3q

1
Rich

wpmu_new_blogアクション用のフックを作成する必要があります。

add_action( 'wpmu_new_blog', 'wpse8170_wpmu_new_blog' );
function wpse8170_wpmu_new_blog( $blog_id ) {
    switch_to_blog( $blog_id );
    flush_rewrite_rules();
    restore_current_blog();
}
1
Eugene Manuilov

あなたは自分でサイトを展開しているのでしょうか、それともファイルを与えて他の人にそれをさせているのでしょうか。デフォルトのテーマを使用するようにconfigでWP_DEFAULT_THEMEを定義しています、それによってafter_switch_themeを否定していますか?

私の考えでは、通常のwpインストールで、ファイルをサーバーにアップロードし、データベースの設定を定義し、ドメインにアクセスし、wpで設定のページを表示し、インストールをクリックします。今は通常この段階でテーマを変更しますが、WP_DEFAULT_THEMEですでにテーマを定義しているので、テーマは決して選択されないと言っていますか。

あなたはいたずらかもしれませんし、フロントのindex.phpにコードを追加し、あなたのテーマ特有の設定をするファイルをインクルードし、終了すると自分自身を削除します。

0
gwillie

Multisiteで新しいブログを作成するときにテーマ設定を自動化することの一環として、私は自分自身と同様の問題を経験していました。さまざまなアプローチを試した後、私はで素晴らしい記事を見つけました。 https://jeremyfelt.com/2015/07/17/flushing-rewrite-rules-in-wordpress-multisite-for -fun-and-profit /#comment-141799

この記事ではさまざまなオプションを紹介していますが、私の新しいサイトで書き換え規則をフラッシュアウトする方法を簡単に説明しました。

/* Add action call to New Blog Hook */
add_action('wpmu_new_blog', 'setup_my_site', 10, 2);

// Setup function
function setup_my_site($blog_id, $user_id){

    // Switch blog context  
    switch_to_blog($blog_id);

    // Delete initial rule options
    delete_option( 'rewrite_rules' );

    // Restore original blog context
    restore_current_blog();

}

同じような状況で誰かに役立つことを願っています:)

0
Matt Woodward