Очистка файлов cookie, используемых плагином до и после WordPress - PullRequest
0 голосов
/ 05 мая 2020

У меня есть веб-сайт Wordpress, и я добавил форму для захвата электронной почты пользователя перед просмотром видео с помощью плагина «до» и «после». файлы cookie не очищаются, чтобы пользователь мог ввести адрес электронной почты перед просмотром видео.

Я изменил следующий код, но не уверен, что он работает.
Мне нужно удалить файлы cookie после установки время, например, 5 часов, как мне этого добиться?

function clear_goal_cookies()
{

    // clear session
    foreach ($_SESSION as $key => $value)
    {
        // test if $key starts with 'goal_'
        if (strpos($key, 'goal_') === 0) {
            // it does! so delete it
            unset($_SESSION[$key]);
        }
    }

    // clear cookies
    foreach ($_COOKIE as $key => $value)
    {           
        // delete cookie if it starts with 'b_a_a_g_'
        if (strpos($key, 'b_a_a_g_') === 0) {
            unset($_COOKIE[$key]);
            // set a new cookie with its expiration in the past 
            // so it will be deleted on next page load
            //setcookie($key, '', time() - 3600, '/');  COMMENTED THIS OUT
            // let the cookie be deleted after 24 hours
            setcookie($key, '', time() + 86400, '/'); // 86400 = 1 day I ADDED THIS
        }
    }

    // delete all goal completion post meta values for the current user
    $browser_hash = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
    $meta_key = 'b_a_goal_complete_' . $browser_hash;
    $args = array(
        'post_type' => 'b_a_goal',
        'posts_per_page' => -1,
        'post_status' => 'any',
        'meta_key' => $meta_key
    );
    $goals_completed = get_posts($args);
    if ( !empty($goals_completed) && is_array($goals_completed) ) {
        foreach($goals_completed as $goal) {
            delete_post_meta($goal->ID, $meta_key);
        }           
    }

}

1 Ответ

0 голосов
/ 06 мая 2020

Вы хотите сохранить файлы cookie, но ваши «чистые файлы cookie» foreach l oop удаляют их при каждой загрузке страницы.

См. Комментарии:

// set a new cookie with its expiration in the past 
// so it will be deleted on next page load

The unset($_COOKIE[$key]); готовит ie удаление. Если вы этого не хотите, закомментируйте.

Вы хотите, чтобы у повара ie «время жизни» было 5 часов. Это 18000 секунд:

setcookie($key, '', time() + 18000, '/');

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