跟踪登录用户的cookie存在 - wordpress

时间:2016-11-09 11:14:07

标签: php wordpress cookies

默认情况下,wordpress为登录用户创建cookie,如下所示:

Cookie Name: wordpress_logged_in_a32e4aa16e20e5346cda1

我检查了创建此cookie的wordpress核心文件(wp-includes / default-constants.php)。我是如何看到wordpress_logged_in_之后的cookiehash是你的网站网址用md5()完成的。

if ( !defined( 'COOKIEHASH' ) ) {
    $siteurl = get_site_option( 'siteurl' );
    if ( $siteurl )
        define( 'COOKIEHASH', md5( $siteurl ) );
    else
        define( 'COOKIEHASH', '' );
}
if ( !defined('LOGGED_IN_COOKIE') )
    define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH);

我需要检查该cookie是否存在或具有如下值:

if(isset($_COOKIE['wordpress_logged_in_a32e4aa16e20e5346cda1']) && !empty($_COOKIE['wordpress_logged_in_a32e4aa16e20e5346cda1'])){
    //do something
}

但是现在我正在测试网站上工作并且网站网址不同,一旦我上线,网站网址将被更改,cookiehash也将被更改。上线后或者在我的functions.php文件中进行实时复制和粘贴新哈希后,我不希望出现问题。

有没有动态的方法来检查这个cookie的存在?

1 个答案:

答案 0 :(得分:1)

您可以使用Wordpress功能获取网站网址变量。

get_site_url();

实施例

<?php echo get_site_url(); ?>
//Results in the full site URL being displayed:
http://www.example.com

获取网站网址后。用PHP计算它的MD5。请注意,要在wordpress模板文件之外使用此功能,您需要在PHP代码中包含Worpress wp-load.php及其路径

<?php include '../../../wp-load.php'; ?>

收到MD5后,您可以连接字符串并在支票中使用。如果你有困惑,请在评论中告诉我。

修改

$siteurl = get_site_option( 'siteurl' );
if ( $siteurl ){
    $hashedSiteUrl = md5( $siteurl );
    $finalUserCookieName = 'wordpress_logged_in_'.$hashedSiteUrl;
}

if(isset($_COOKIE[$finalUserCookieName]) && !empty($_COOKIE[$finalUserCookieName])){
    //some action
}

参考:https://developer.wordpress.org/reference/functions/get_site_url/