web-dev-qa-db-ja.com

Wp-activate.phpのカスタマイズ

Wp-activate.phpをカスタマイズする方法を知っている人はいますか?

コンテンツを<div id="content" class="widecolumn">でラップしますが、私のテーマではメインラッパーは<div id="main">です。

おそらく、div#content.widecolumndiv#mainと同一になるようにスタイルすることができます。しかし、誰もが編集せずにこのファイルをカスタマイズする方法を知っているなら私は興味があります。

5
nothingtosee

あなたは正しい、これは非常にハッキーです。

最終的には、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=""に変更しました

Functions.php

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);

これは問題なく動作しているようです-これらのページはコアに影響を与えることなく自由に変更できます。これも少しハック感がありますが。

5
nothingtosee

Af_wpmu_signup_user_notificationでreturnをfalseに変更することを忘れないでください。それ以外の場合は、2通のメールがユーザーに送信されます。古いリンクと新しいリンクがあります。

3
Ediran

ここでの主な問題は、wp-activate.phpはあなたのheader.phpを含みますが、functions.phpは含みません。あなたのfunctions.phpで定義されているあなたのヘッダの中で関数を使用すると、致命的なエラーを起こすかもしれません。

私は私のテーマで二つの新しいファイルを使います。

  • header-activate.php
  • footer-activate.php

wp-activate.phpが呼び出されると、定数WP_INSTALLINGTRUEに設定されます(明白な理由はありません)。私はそれを私の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();

結果

enter image description here


全体のプロセスはハッキングする方法です。これを処理するより良い方法があると確信しています。

3
fuxia

私はこれを追加することで、サイトの他の部分と同じアクティブ化ページを作成しました。

require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
0
nicoblog

私は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);
}
0
dwenaus