我试图在一段时间不活动后创建一个注销WordPress用户的功能。定时元素正常工作,并在一段时间后重定向用户。
问题是,一旦加载了PHP脚本(在代码示例中),我就会遇到以下错误:致命错误:在/ var / www / html / wp-content中调用未定义的函数wp_logout()第5行/plugins/ion-wp-login-timeout/scripts/timed-logout.php
我读过的所有参考资料告诉我wp_logout()应该注销用户,但是有错误。我尝试了几种方法,包括添加一个动作。我不想将用户重定向到登录屏幕。
代码示例如下。 echo语句仅用于测试。任何帮助将非常感激。
<?php
function logout_this_session() {
//Logout Now
wp_logout();
wp_die();
}
echo 'This will be the logout script<br/><br/>';
$last_page = $_SERVER['HTTP_REFERER'];
echo 'You came from: ' . $last_page;
logout_this_session();
header( 'Location: ' . $last_page );
?>
答案 0 :(得分:0)
你可以在functions.php
中创建你的函数add_action( 'wp_logout', 'redirect_after_logout');
function redirect_after_logout(){
wp_redirect( 'http://example.com' );
exit();
}
然后将其放在您网站的愿望位置:
<a href="<?php echo wp_logout_url(); ?>" >Logout</a>
答案 1 :(得分:0)
必须在 init 操作中使用。
您可以使用 wp_logout()注销当前用户的功能
wp-includes / pluggable.php 文件中此功能的详细信息:
<?php
/**
* Log the current user out.
*
* @since 2.5.0
*/
function wp_logout() {
wp_destroy_current_session();
wp_clear_auth_cookie();
/**
* Fires after a user is logged-out.
*
* @since 1.5.0
*/
do_action( 'wp_logout' );
}
答案 2 :(得分:0)
我终于想出了一个解决方案,如下面的代码示例所示。在退出用户之前的过程的最后阶段,我将wpsessionexpired = true值发布回用户所在的页面。用户注销后,会立即刷新同一页面。我把它放在主插件文件中。
function logoutUser(){
if ( $_POST["wpsessionexpired"] == 'true' ){
wp_logout();
header("refresh:0.5;url=".$_SERVER['REQUEST_URI']."");
}
}
add_action('init', 'logoutUser');
答案 3 :(得分:0)
根据用户角色的注销功能 (这是一个有效的代码)复制并粘贴到function.php文件中
function redirect_after_logout() {
$current_user = wp_get_current_user();
$role_name = $current_user->roles[0];
if($role_name == 'subscriber'){
$redirect_url = site_url();
wp_safe_redirect( $redirect_url );
exit;
}
}
add_action( 'wp_logout', 'redirect_after_logout' );
答案 4 :(得分:0)
这也适用于
<?php
if (current_user_can('client') OR current_user_can('salesrep') ){
?>
<a href="<?php echo wp_logout_url( home_url() ); ?>" class="btn btn-primary"
style="float: right;" >Logout</a>
<?php }
?>
您可以根据需要设置任何角色。就像这个例子(客户,salesrep)
答案 5 :(得分:0)
加入哈米德·穆迪; Here
创建一个注销用户的自定义函数
/**
* Log the current user out.
*
* @since 2.5.0
*/
function my_custom_user_logout() {
wp_destroy_current_session();
wp_clear_auth_cookie();
/**
* Fires after a user is logged-out.
*
* @since 1.5.0
*/
do_action( 'wp_logout' );
}
然后在注销后创建自定义重定向
add_action('init', 'mfsl_logout');
function mfsl_logout(){
if ( $_POST["wpsessionexpired"] == 'true' ){
wp_logout();
wp_safe_redirect( home_url() ); // custom URL to redirect after logot
exit();
}
}
当注销时,他们将被重定向到主页或任何自定义 URL