Wp-activate.phpをカスタマイズする方法を知っている人はいますか?
コンテンツを<div id="content" class="widecolumn">
でラップしますが、私のテーマではメインラッパーは<div id="main">
です。
おそらく、div#content.widecolumn
をdiv#main
と同一になるようにスタイルすることができます。しかし、誰もが編集せずにこのファイルをカスタマイズする方法を知っているなら私は興味があります。
あなたは正しい、これは非常にハッキーです。
最終的には、2つの新しいページテンプレートRegisterおよびActivateを作成し、それらのテンプレートを使用して2つの新しいWordPressページを作成してから、 functions.php
ファイルで動作1を変更しますwpmu_signup_user_notification。
ユーザーはこの新しい登録ページに登録し、新しいアクティベーションページにリンクする電子メールが送信されます。
Registerテンプレートで、wp-signup.php
からコードをコピーし、先頭から次の行を削除しました。
require( dirname(__FILE__) . '/wp-load.php' );
require( './wp-blog-header.php' );
テンプレートに収まるように、<div id="content" class="widecolumn>
を<div id="main">
に変更しました。
また、フォームアクションの値をaction="<?php echo network_site_url('wp-activate.php'); ?>"
からaction=""
に変更しました
Activateテンプレートで、wp-activate.php
からコードをコピーし、最初から次の行を削除しました。
define( 'WP_INSTALLING', true );
/** Sets up the WordPress Environment. */
require( dirname(__FILE__) . '/wp-load.php' );
require( './wp-blog-header.php' );
テンプレートに収まるように、<div id="content" class="widecolumn>
を<div id="main">
に変更しました。
繰り返しますが、すべてのフォームアクションをaction=""
に変更しました
wpmu_signup_user_notification関数をwp-includes/ms-functions.php
からfunctions.php
ファイルにコピーしました。
ユニークな名前に変更しました:af_wpmu_signup_user_notification
以下を削除しました。
if ( !apply_filters('wpmu_signup_user_notification', $user, $user_email, $key, $meta) )
return false;
activateはアクティブ化ページのページスラッグであるため、site_url( "wp-activate.php/?key=$key" )
行をsite_url( "activate/?key=$key" )
に変更しました。
次に、次のコードでフィルターとして適用しました。
add_filter('wpmu_signup_user_notification', 'af_wpmu_signup_user_notification', 10, 4);
これは問題なく動作しているようです-これらのページはコアに影響を与えることなく自由に変更できます。これも少しハック感がありますが。
Af_wpmu_signup_user_notificationでreturnをfalseに変更することを忘れないでください。それ以外の場合は、2通のメールがユーザーに送信されます。古いリンクと新しいリンクがあります。
ここでの主な問題は、wp-activate.php
はあなたのheader.php
を含みますが、functions.php
は含みません。あなたのfunctions.php
で定義されているあなたのヘッダの中で関数を使用すると、致命的なエラーを起こすかもしれません。
私は私のテーマで二つの新しいファイルを使います。
header-activate.php
とfooter-activate.php
wp-activate.php
が呼び出されると、定数WP_INSTALLING
はTRUE
に設定されます(明白な理由はありません)。私はそれを私のheader.php
で使っています。私はfunctions.php
をインクルードして私のセットアップ関数を呼び出します。
header.php
の始まり// on wp-activate.php this is FALSE
if ( ! function_exists( 't5_setup' ) )
{
require_once dirname( __FILE__ ) . '/functions.php';
t5_setup();
}
if ( defined( 'WP_INSTALLING' ) and WP_INSTALLING )
{
locate_template( 'header-activate.php', TRUE, TRUE );
return;
}
だから私は通常のヘッダファイルの実行を防ぎ、カスタマイズされたものを使う。
header-activate.php
<?php # -*- coding: utf-8 -*-
declare( encoding = 'UTF-8' );
?>
<!Doctype html>
<html <?php language_attributes(); ?> <?php body_class( ' ' ); ?>>
<head>
<title><?php
$current_title = wp_title( '|', FALSE, 'right' );
print empty ( $current_title ) ? get_bloginfo( 'name' ) : $current_title . get_bloginfo( 'name' );
?></title>
<meta http-equiv="X-UA-Compatible" content="chrome=1,IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<?php
wp_head();
?>
<style>
#content
{
background: #333;
background: rgba(0, 0, 0, .7);
border: 1px solid #000;
border-radius: 10px;
box-shadow: 0px 0px 10px #000;
color: #eee;
font: 1em/1.45 sans-serif;
margin: 140px auto;
max-width: 400px;
padding: 40px;
}
#key
{
background: #ccc;
background: rgba(255, 255, 255, .5);
border: 0;
color: #eee;
width: 100%;
}
#key:focus
{
background: #fff;
color: #000;
}
.submit
{
text-align: right;
}
#submit
{
background: #222;
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444', endColorstr='#222222')";
background-image: -o-linear-gradient(#444444,#222222);
background: -webkit-linear-gradient(#444444,#222222);
background: -moz-linear-gradient(#444444,#222222);
border: 2px solid #333;
border-color: #4d4d4d #333 #202020;
border-radius: 7px;
color: #eee;
width: auto;
}
</style>
</head>
<body>
ご覧のとおり、外部スタイルシートは使用していません。必要はありません。しかし、カスタムの背景画像はまだアクティブです。
私のfooter.php
でも同じことをします。
footer.php
の始まりif ( defined( 'WP_INSTALLING' ) and WP_INSTALLING )
{
locate_template( 'footer-activate.php', TRUE, TRUE );
return;
}
footer-activate.php
<?php # -*- coding: utf-8 -*-
declare( encoding = 'UTF-8' );
wp_footer();
全体のプロセスはハッキングする方法です。これを処理するより良い方法があると確信しています。
私はこれを追加することで、サイトの他の部分と同じアクティブ化ページを作成しました。
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
私はmu-plugins/my-functions.phpに入れられたこのコードを使ってgettextをフィルタリングすることができるようにテキストの一部を修正したいだけでした。これを通常のプラグインに入れてもうまくいきませんが、基本テーマのfunctions.phpに入れることはできます。
function rgbook_activate_page_action() {
add_filter('ngettext', 'rgbook_activate_page_change_text' );
add_filter('gettext', 'rgbook_activate_page_change_text' );
}
add_action( 'activate_header', 'rgbook_activate_page_action' );
function rgbook_activate_page_change_text( $text ) {
$search = '<a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.';
$replace = '<a href="%1$s">Click here to log in now</a>.';
return str_ireplace($search, $replace, $text);
}