我正在尝试为WordPress网站构建自定义退出页面。
我使用以下wp-login.php
代码禁用了.htaccess
。
<Files wp-login.php>
deny from all
</Files>
如果您访问此页面,您将收到403禁止响应。
现在,我要在用户注销之前执行一个功能。
function execute_this() {
wp_logout();
}
事情是互联网上的所有建议都在使用以下代码。
add_action('wp_logout', 'execute_this');
但是此钩子执行“ AFTER”成功注销,在我的情况下,由于无法访问wp-login.php
,因此无法完成。
这就是为什么我试图注销用户“之前”,然后转到wp-login.php
文件。
是否存在触发此类情况的挂钩/动作?
我也尝试做这样的事情(用我创建的页面自定义注销页面):
add_filter( 'logout_url', 'wpse_58453_logout_url' );
function wpse_58453_logout_url( $default )
{
return plugin_dir_url(__FILE__) . 'logout.php';
}
然后在我的logout.php
require_once('../../../wp-includes/pluggable.php');
wp_logout();
我知道这是错误的方法,因为直接执行PHP文件从来都不是一个好主意,而且在执行此类操作时我无法访问WordPress挂钩。
有什么办法可以解决这个问题?
答案 0 :(得分:1)
我对wordpress并不十分了解,但是我帮助维护的网站之一具有自定义退出网址(/tp-logout
),主题具有以下代码来执行退出操作
function tp_custom_logout() {
if ( is_page( 'tp-logout' ) && is_user_logged_in() ) {
wp_destroy_current_session();
wp_clear_auth_cookie();
$url_logout = home_url();
wp_redirect( $url_logout );
exit();
}
}
add_action( 'template_redirect', 'tp_custom_logout' );
它看起来与默认的WP注销功能极为相似,因此不知道为什么要添加它,但是也许您可以按照这种方法添加自定义代码。
我将调用函数wp_logout()
进行实际注销,而不是复制代码(并且不调用wp_logout操作钩子),以使其更加友好。