Wordpress - 自定义变量会话/ cookie无效

时间:2014-03-06 05:51:52

标签: php wordpress

我想在WordPress网站的会话或cookie中添加一些值。我试图在AJAX中这样做。但它不起作用。通常我的会话或cookie变量不工作/创建。我找到了一些教程并尝试了,但仍然没有改进。

http://stackoverflow.com/questions/6183162/how-can-i-set-get-and-destroy-cookies-in-wordpress

http://blog.ginchen.de/en/2008/08/15/session-variablen-in-wordpress/
http://devondev.com/2012/02/03/using-the-php-session-in-wordpress/
http://www.thinkingoutloud.co.za/content/20091012/php_wordpress_and_session

当我使用htaccess注册register_globals并且如果我创建php.ini文件时,我得到500内部错误。

感谢您阅读此内容..

我在functions.php中的代码

function register_session(){
    if( !session_id() )
        session_start();
}
add_action('init','register_session',1);

function enquiry_ajax_request() {
    if ( isset($_REQUEST) ) {
        if(isset($_REQUEST['product'])){                
            $_SESSION['product'] = "Some data I need later";
            setcookie('my_cookie', 'some default value', strtotime('+1 day'));
        }
    }
}
add_action( 'wp_ajax_enquiry_ajax_request', 'enquiry_ajax_request' );
add_action( 'wp_ajax_nopriv_enquiry_ajax_request', 'enquiry_ajax_request' );

jquery的

jQuery(document).ready(function($) {
    $( "#add-enquiry" ).click(function() {      
        $.ajax({
            url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
            data: {
                'action':'enquiry_ajax_request',
                'product' : '<?php echo get_the_ID(); ?>'
            },
            success:function(data) {
                console.log(data);
            },
            error: function(errorThrown){
                console.log(errorThrown);
            }
        });
    });
});

这是该网站     http://davidrossfurniture.com/the-collection/product-one/another-chair/

当您单击“添加到查询”按钮时,其调用带有产品ID的ajax,必须在会话或cookie中添加。这就是我必须做的事情。

ajax链接:      http://davidrossfurniture.com/wp-admin/admin-ajax.php?action=enquiry_ajax_request&product=524

1 个答案:

答案 0 :(得分:1)

现在AJAX返回会话ID。尝试调试PHP部分,将一些实际数据返回给客户端并将其转储到浏览器控制台

function enquiry_ajax_request() {
    // No need to check $_REQUEST itself - it is always set
    if(isset($_REQUEST['product'])){
        $_SESSION['product'] = "Some data I need later";
        setcookie('my_cookie', 'some default value', strtotime('+1 day'));
    }
    $data = array(
        'request'=>$_REQUEST,
        'session'=>$_SESSION,
        'cookie'=>$_COOKIE,
    );
    echo json_encode($data);
}

<强> UPD: 可能问题出在 cookie路径中。它似乎在/wp-admin/之外无法访问。尝试将其设置为/,如下所示:

setcookie('my_cookie', 'some default value', strtotime('+1 day'), '/');