首页 > 解决方案 > 如何通过 Wordpress REST 创建 cookie

问题描述

我需要通过 Wordpress REST 更新 cookie

我有功能和注册路线。

const COOKIE_NAME = "wts_wishlist";

setcookie(COOKIE_NAME, "Empty-wishlist", time() + (365 * 24 * 60 * 60), '/' );
//cookie was created in browser

add_action('init', function () {
    //Add to wishlist
    function wts_add_to_wishlist()
    {
        $id = $_GET['id'];
        if(!isset($_COOKIE[COOKIE_NAME])) {
            return 'Cookie with name "' . COOKIE_NAME . '" does not exist...';
        } else {
            setcookie(COOKIE_NAME, $id, time() + (365 * 24 * 60 * 60), '/' );
//not changed
            return "Product with id {$id} was added to your wishlist";
        }
    }
}

add_action('rest_api_init', function () {
//POST - Wishlist from cookies
    register_rest_route('wts/v1', 'wishlist/add', [
        'methods' => 'POST',
        'callback' => 'wts_add_to_wishlist',
    ]);
}

example.com/wp-json/wts/v1/wishlist/add?id=1763 返回 200 和消息。但是浏览器中的cookie没有更新

标签: phpwordpressrest

解决方案


当我复制您的代码并尝试签入我的本地服务器时出现错误。我做了一些改变,并且工作得很好。

const COOKIE_NAME = "wts_wishlist";

setcookie(COOKIE_NAME, "Empty-wishlist", time() + (365 * 24 * 60 * 60), '/' );
//cookie was created in browser

add_action('init', function () {
    //Add to wishlist
    function wts_add_to_wishlist() {
        $id = $_GET['id'];
        if(!isset($_COOKIE[COOKIE_NAME])) {
            return 'Cookie with name "' . COOKIE_NAME . '" does not exist...';
        } else {
            setcookie(COOKIE_NAME, $id, time() + (365 * 24 * 60 * 60), '/' );
            //not changed
            return "Product with id {$id} was added to your wishlist";
        }
    }
});
// Closed this action
add_action('rest_api_init', function () {
    register_rest_route('wts/v1', 'wishlist/add', [
        'methods' => 'GET', // Change method to GET for testing.
        'callback' => 'wts_add_to_wishlist',
    ]);
});
// Closed this action

如果您希望在方法中使用 POST 更改 POST 而不是 GET 并尝试使用 POSTMAN 进行测试。

希望这对你有帮助!


推荐阅读