Inhalt
In einem WordPress Projekt bei dem sich andere registrieren können, darf eine Funktion nie fehlen, die wp_register() Funkion.
Die wp_register() Funktion zeigt einen Link an, der es dem Nutzer ermöglicht, zur Registrierungsseite zu navigieren, wenn er nicht angemeldet ist und die Registrierung aktiviert ist, oder zum Dashboard, wenn er angemeldet ist.
Filter vs. eigene Funktion
In einem unserer Projekte wollten wir diese Funktion einsetzen, jedoch etwas modifiziert an unsere Bedürfnisse. Anstatt jedoch den möglichen WP Filter zu nutzen, haben wir uns für die flexiblere Option entschieden und uns unsere eigene Funktion entwickelt. Hier kommt uns der große Vorteil von Open Source Code zu Gute. Anstatt sich den eigenen Code selber zu überlegen, kann man den WordPress Code auch einfach als Ausgangspunkt seiner neuen Funktion nutzen. Dies gilt natürlich auch für viele weitere nützliche WordPress Funktionen.
Eigene WordPress register Funktion
In unserem Fall wollten wir, wenn der Nutzer angemeldet ist, nicht zum Dashboard navigieren, sondern auf eine extra angelegte Seite. Hierfür wurde die ursprüngliche wp_register() Funktion einfach übernommen und dementsprechend angepasst.
/**
* Display the Registration link.
*
* Display a link which allows the user
* to navigate to the registration page if
* not logged in and registration is
* enabled or to the ``Intern`` Page if logged in.
*
* @param string $before Text to output before the link. Default `<li>`.
* @param string $after Text to output after the link. Default `</li>`.
* @param bool $echo Default to echo and not return the link.
* @return void|string
*/
function wp_register2($before = '<li>', $after = '</li>', $echo = true)
{
if (!is_user_logged_in()) {
if (get_option('users_can_register')) {
$link = $before . '<a href="';
$link .= esc_url(wp_registration_url());
$link .= '">' . __('Register') . '</a>' . $after;
} else {
$link = '';
}
} elseif (current_user_can('read')) {
$link = $before . '<a href="';
$link .= esc_url(home_url('intern'));
$link .= '">Intern</a>' . $after;
} else {
$link = '';
}
if ($echo) {
echo $link;
} else {
return $link;
}
}
Am Ende nutzen wir einfach unsere neue wp_register2() Funktion. Die minimale Änderung hier hätte auch mittels Filter umgesetzt werden können. Jedoch geht hierbei etwas Flexibilität verloren, da innerhalb des Filters nur der fertige String für den Link zur Verfügung steht. Vergleiche hierzu gerne unsere und die ursprüngliche wp_regsiter() Funktion. Nutzt du ausschließlich Filter oder nutzt du auf Basis von WordPress Funktionen gerne auch deine eigenen? Lass es uns gerne wissen!