はい、 WordPress Multisite 用のカスタムサインアップページを作成するのをやめました。
それはよく修正された質問です、そして、私たちの多くは答えを求めています。誰かがそれを手に入れたかもしれませんが、それでも私はこの問題のための堅実で全体論的なものを見つけることができません。私は.htaccess
以外の方法、つまりPHPまたはWordPressを見つけようとしています。
私はこの探求で見つけられた最も明白な記事を研究しました:
さて、今私は/wp-signup.php
のすべてのコードを私のテーマのsignup.php
という名前のファイルにコピーし、それをページテンプレートにして、http://example.com/signup
というURLを持つページと呼びました。
必要な場所に変更を加えました。 get_header( 'wp-signup' );
の代わりに私は私のテーマget_header('null');
から私のカスタムのものを使いました。それ(header-null.php
)は、私のテーマのデフォルトのheader.php
ファイルと比べて、設計とアーキテクチャーにおいてはほとんど必要ありません。
ああ! WordPressのどこにも
header-wp-signup.php
はありません
同様に私はget_footer( 'wp-signup' );
を次のように置き換えました。
?> <!-- /ending of php tag -->
</div> <!-- /.container .site-area .not-logged-in-page -->
<?php wp_footer(); ?>
</body>
</html>
@toschoは、すでにロードされているファイルを呼び出すという2つの問題を解決するのに役立ちました。そのため、絶対パスを表示する代わりに、単に行をコメントアウトしました。
//require( dirname(__FILE__) . '/wp-load.php' );
そして
//require( dirname( __FILE__ ) . '/wp-blog-header.php' );
今、私は新しく修正された申し込みページのための素晴らしい、作業ファイルです。 /wp-signup.php
を使用せずに、.htaccess
からここにトラフィックを誘導する必要があります。
このWordPress.orgサポートスレッドはとても役に立ちました。
今、私はwp-content/mu-plugins/sign-up-location.php
にファイルを作る "mu-plugin"を作りました。そこで2つの関数を使いました。
/**
* Changing the Registration page URL.
*
* @return string The URL of the new page.
* --------------------------------------------------------------------------
*/
function project_signup_page() {
$page = network_site_url() .'signup/';
return $page;
}
add_filter( 'wp_signup_location', 'project_signup_page' );
/**
* Redirect from default signup page to custom page.
*
* @return void
* --------------------------------------------------------------------------
*/
function project_redirect_from_default_signup() {
if( strpos($_SERVER['REQUEST_URI'], 'wp-signup.php')) {
wp_redirect(network_site_url() .'signup/');
exit();
}
}
add_action( 'plugins_loaded', 'project_redirect_from_default_signup' );
最初の方法は、登録URLを私のカスタムパスに変更することです。そして2番目のものは私が望むもので、トラフィックを/wp-signup.php
なしで/signup
から.htaccess
へと駆動します。
注:MUプラグインを作成する代わりに、通常のプラグインを使用して同じ効果を得ることができます。
@ toschoの提案に従って、ページテンプレートのものをRewrite Endpoint
に置き換えました。
<?php
/**
* Rewrite endpoint : /register.
*
* @return void
* --------------------------------------------------------------------------
*/
function project_registration_endpoint() {
add_rewrite_endpoint( 'register', EP_ROOT );
if( get_option("EDIT_REWRITE_RULE") != 1 ) {
flush_rewrite_rules();
update_option( "EDIT_REWRITE_RULE", 1 );
}
}
add_action( 'init', 'project_registration_endpoint' );
/**
* Custom Template for Registration.
*
* @param string $template Template to be loaded.
* @return string Our custom template to show up.
* --------------------------------------------------------------------------
*/
function project_custom_templates( $template ) {
if( ! is_admin() ) {
if( get_query_var('register') || strpos($_SERVER['REQUEST_URI'], 'wp-signup.php') ) {
$template = get_template_directory() .'/signup.php';
}
}
return $template;
}
add_filter( 'template_include', 'project_custom_templates' );
/**
* Return a value for '/register'
* Make sure that 'get_query_var( 'register' )' will not return just an empty string if it is set.
*
* @link http://wordpress.stackexchange.com/a/51450/22728
* @link https://www.pmg.com/blog/a-mostly-complete-guide-to-the-wordpress-rewrite-api/
*
* @param array $vars Query variables.
* @return array Modified query variables.
* --------------------------------------------------------------------------
*/
function project_set_epex_var( $vars ) {
isset( $vars['register'] ) and $vars['register'] = true;
return $vars;
}
add_filter( 'request', 'project_set_epex_var' );
修正:そしてその時点で、起こりうる競合を解決するためにスラッグ/signup
を/register
に変更しました。それに応じてmu-pluginの文字列を変更しました。そして、ページテンプレートを廃止します。
すべてうまく動いています、そして私は自分の望むものを手に入れました:) ...を除いて...
成功またはエラーメッセージ.
すべての成功またはエラーメッセージは、wp_redirect()
と共に消えています。 :○
私は自分のファイルをチェックしました、そう、show_user_form()
は$errors
パラメータでそこにあります、エラーまたは成功メッセージを除いて、すべて問題ありません。
カスタムページの申し込みページに成功メッセージやエラーメッセージを表示するにはどうすればよいですか。
私は 私のブログ記事 でベンガル語のすべての情報源で詳細にすべてを詳細に説明しました - 私は恐れています、ベンガル語への自動翻訳はそれまでではありません良い。
signup.php
ファイルで、フォームaction
をwp-signup.php
からsignup.php
...に変更してみてください。このように、フォームデータはリダイレクトを通過せず、直接同じファイルに戻されます。これにより、フォーム投稿の$errors
が保持されます。