Как читать куки WordPress на моем сайте? - PullRequest
6 голосов
/ 19 февраля 2012

Я хочу интегрировать свой веб-сайт с WordPress. Я хочу знать, как я могу читать файлы cookie WordPress, чтобы мне не нужно было снова аутентифицировать пользователей на моем веб-сайте. Я попытался включить заголовочный файл WordPress на свой веб-сайт, но тогда я не смог подключиться к базе данных моего сайта. И то, и другое отличается. Могу ли я установить дополнительные параметры файлов cookie, такие как уровень пользователя и т. д. Мой сайт написан на php.

Ответы [ 2 ]

4 голосов
/ 19 февраля 2012

На вашем веб-сайте укажите код в верхней части каждого файла:

<?php 
define('WP_USE_THEMES', false);
require('./blog/wp-blog-header.php');
?>

... при условии, что ваш блог находится в ./blog/.

Включает весь стек WordPress. У вас будет доступ ко всем функциям WordPress в вашем коде. При этом вы можете легко проверить, вошел ли пользователь в систему, его роли и возможности, а также получить сообщения или около того.

Тогда в вашем коде, чтобы проверить пользователя:

if (is_user_logged_in()) { ... } 

Кодекс: is_user_logged_in ()

Вы также можете включить ссылку выхода из системы:

<a href="<?php bloginfo("url"); ?>/wp-login.php?action=logout/">Logout</a>

Если ваш блог и ваш сайт не находятся в одном домене или субдомене, вам необходимо настроить домен cookie в wp-config.php

define('COOKIE_DOMAIN', '.domain.com'); // Share cookie on all subdomains

EDIT

Если вы действительно хотите прочитать файлы cookie WordPress (что является хорошим выбором для производительности): имя файла cookie сохраняется в константе AUTH_COOKIE.

AUTH_COOKIE определяется в /wp-includes/default-constants.php -> line 171 как

"wordpress_" + md5( get_site_option(siteurl) )

Вы должны извлечь или заново вычислить AUTH_COOKIE, а затем прочитать $ _COOKIE [AUTH_COOKIE].

Чтобы разобрать его, посмотрите на wp_parse_auth_cookie() в wp-includes/pluggable.php @line 585 (на самом деле формат простой user|expiration|hmac, поэтому разбейте цепочку на | и получите первый элемент)

0 голосов
/ 06 сентября 2013

Чтобы файлы cookie работали в Wordpress, вам нужно установить их особым образом, как в functions.php

function set_newuser_cookie() {
    if (!isset($_COOKIE['sitename_newvisitor'])) {
        setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    }
}
add_action( 'init', 'set_newuser_cookie');

Итак, важный момент setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);

Чтобы получить

if (isset($_COOKIE['sitename_newvisitor'])) {
     echo 'Welcome back!';
}
else {
     echo 'Hello new visitor!';
}

Примечание : вы можете изменить имя файла cookie 'sitename_newvisitor', значение, время ожидания, COOKIEPATH и COOKIE_DOMAIN в соответствии с вашими потребностями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...