默认情况下,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的存在?
答案 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/