it-swarm.com.de

Anpassen von wp-activate.php

Weiß jemand, wie ich wp-activate.php anpassen kann?

Es umschließt den Inhalt mit <div id="content" class="widecolumn">, in meinem Theme ist der Hauptwrapper jedoch <div id="main">

Vermutlich könnte ich einfach div#content.widecolumn so stylen, dass er mit div#main identisch ist. Aber ich bin neugierig, ob jemand weiß, wie man diese Datei anpasst, ohne sie zu bearbeiten.

5
nothingtosee

Du hast recht, das ist sehr abgedreht.

Am Ende habe ich zwei neue Seitenvorlagen erstellt Registrieren und Aktivieren und zwei neue WordPress-Seiten mit diesen Vorlagen erstellt und dann einen Filter in meiner functions.php-Datei verwendet, um das Verhalten einer zu ändern wpmu_signup_user_notification .

Benutzer registrieren sich auf dieser neuen Registrierungsseite und erhalten eine E-Mail mit einem Link zur neuen Aktivierungsseite.

Vorlage registrieren

In der Registervorlage habe ich den Code von wp-signup.php kopiert und die folgenden Zeilen von Anfang an entfernt:

require( dirname(__FILE__) . '/wp-load.php' );    
require( './wp-blog-header.php' );

Ich habe auch <div id="content" class="widecolumn> in <div id="main"> geändert, um mit der Vorlage übereinzustimmen.

Ich habe auch den Wert der Formularaktion von action="<?php echo network_site_url('wp-activate.php'); ?>" in action="" geändert.

Vorlage aktivieren

In der Vorlage Aktivieren habe ich den Code von wp-activate.php kopiert und die folgenden Zeilen von Anfang an entfernt:

define( 'WP_INSTALLING', true );  
/** Sets up the WordPress Environment. */  
require( dirname(__FILE__) . '/wp-load.php' );  
require( './wp-blog-header.php' );

Ich habe den <div id="content" class="widecolumn> in <div id="main"> geändert, damit er in die Vorlage passt.

Wieder habe ich alle Formularaktionen in action="" geändert.

Funktionen.php

Ich habe die Funktion wpmu_signup_user_notification von wp-includes/ms-functions.php in meine functions.php-Datei kopiert.

Benannte es so um, dass es etwas Einzigartiges ist: af_wpmu_signup_user_notification

Folgendes wurde entfernt:

if ( !apply_filters('wpmu_signup_user_notification', $user, $user_email, $key, $meta) )
        return false;

Ich habe die Zeile site_url( "wp-activate.php/?key=$key" ) in site_url( "activate/?key=$key" ) geändert, da activate der Seiten-Slug meiner Seite Activate ist.

Dann habe ich es als Filter mit dem folgenden Code angewendet:

add_filter('wpmu_signup_user_notification', 'af_wpmu_signup_user_notification', 10, 4);

Dies scheint in Ordnung zu sein - ich kann diese Seiten nach Belieben ändern, ohne den Kern zu beeinträchtigen. Auch das fühlt sich ein bisschen zu abgedreht an.

4
nothingtosee

Vergessen Sie nicht, return in Ihrer af_wpmu_signup_user_notification auf false zu setzen. Anderenfalls werden zwei E-Mails an den Benutzer gesendet. Eins mit dem alten Link und eins mit dem neuen.

3
Ediran

Das Hauptproblem hierbei ist: wp-activate.php enthält Ihren header.php, jedoch nicht den functions.php. Es kann zu schwerwiegenden Fehlern kommen, wenn Sie Funktionen in Ihrem Header verwenden, die in Ihrem functions.php definiert sind.

Ich verwende zwei neue Dateien in meinen Themen:

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

Wenn wp-activate.php aufgerufen wird, wird die Konstante WP_INSTALLING auf TRUE gesetzt (ohne ersichtlichen Grund). Ich verwende das in meinem header.php: Ich füge den functions.php hinzu und rufe meine Setup-Funktion auf.

Beginn meines regulären 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;
}

Daher verhindere ich die Ausführung der regulären Header-Datei und verwende eine angepasste.

Mein 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>

Wie Sie sehen, verwende ich kein externes Stylesheet. Nicht nötig. Das benutzerdefinierte Hintergrundbild ist jedoch weiterhin aktiv.

Ich mache dasselbe in meinem footer.php:

Beginn des regulären footer.php

if ( defined( 'WP_INSTALLING' ) and WP_INSTALLING )
{
    locate_template( 'footer-activate.php', TRUE, TRUE );
    return;
}

Vollständiger footer-activate.php

<?php # -*- coding: utf-8 -*-
declare( encoding = 'UTF-8' );
wp_footer();

Ergebnis

enter image description here


Der ganze Prozess ist viel zu hackig. Ich bin sicher, dass es bessere Möglichkeiten gibt, damit umzugehen.

3
fuxia

Ich habe die Aktivierungsseite wie den Rest der Website gestaltet, indem ich Folgendes hinzugefügt habe:

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

Ich wollte nur einen Teil des Textes modifizieren, damit ich gettext mit diesem Code filtern konnte, der in mu-plugins/my-functions.php abgelegt wurde. Es wird NICHT funktionieren, wenn Sie dies in ein reguläres Plugin einfügen, aber Sie können es in die Datei functions.php Ihres Basisthemas einfügen.

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